Home >Backend Development >PHP Problem >How to save files in php

How to save files in php

藏色散人
藏色散人Original
2021-07-03 14:20:414068browse

php保存文件的方法:首先创建一个PHP示例文件;然后生成文件;最后用代码“if(isset($_GET["filepath"])) {...}”实现下载保存即可。

How to save files in php

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

php保存文件的方法

PHP 下载保存文件到本地

经常需要点击按钮,然后弹出一个对话框,保存下载文件。

最常见的方式,就用3499910bf9dac5ae3c52d5ede7383485链接实现,例如:

<a href="xxx/youfile.txt"> youfile.txt </a>

 

本文介绍的下载保存方式,是通过生成文件后,然后用代码实现下载保存。

完整示例(推荐)

<?php
/**
* 下载文件header函数
* copyright by www.mimvp.com
* 2015-05-10
*/
 
$res_filepath = "";
if(isset($_GET["filepath"])) {
    $res_filepath = $_GET["filepath"];
}
 
//  $filepath = "./lib/tmp_txt_result_file_20150508170116.txt";
    $file_realpath = realpath($res_filepath);
    $file_basename = basename($res_filepath);
//  $file_filesize = filesize($res_filepath);
    $file_fileinfo = pathinfo($res_filepath);
 
    if (!file_exists($res_filepath)){
        header("Content-type: text/html; charset=utf-8");
        echo "<html>
                <div style=&#39;margin-left: 20px&#39;>
                    <br>
                    <font color=&#39;blue&#39;>$file_basename</font> 是临时文件已过期,服务器不保存!
                    <br><br>
                    请提取最新代理: <a href=&#39;../fetch.php&#39;>http://proxy.mimvp.com/api/fetch.php</a>
                     
                    <!--
                    <script>
                    alert(&#39;" . $file_basename . "\\n是临时文件,服务器不保存! \\n\\n请重新提取最新代理&#39;);
                    </script>
                    -->
                </div>
              </html>";
    } else {
        $file_filesize = filesize($res_filepath);
        $file = fopen($res_filepath, "r");
        Header("Content-type: application/octet-stream");
        Header("Accept-Ranges: bytes");
        Header("Accept-Length: " . $file_filesize);
        Header("Content-Disposition: attachment; filename=" . $file_basename);
        echo fread($file, $file_filesize);
        fclose($file);
//      echo file_get_contents($filename);
//      readfile($filename);
    }
 
    // 下载或取消后,删除临时文件
    $del_result = @unlink($res_filepath);
    if ($del_result == true) {
        @unlink($res_filepath);
    }
?>

 

网上其他方式

第一种:

<?php 
    function downfile() {
         $filename=realpath("resume.html"); //文件名
         $date=date("Ymd-H:i:m");
         Header( "Content-type:  application/octet-stream "); 
         Header( "Accept-Ranges:  bytes "); 
         Header( "Accept-Length: " .filesize($filename));
         header( "Content-Disposition:  attachment;  filename= {$date}.doc"); 
         echo file_get_contents($filename);
         readfile($filename); 
    }
    downfile();
?>

<?php 
    function downfile($fileurl) {
         ob_start(); 
         $filename=$fileurl;
         $date=date("Ymd-H:i:m");
         header( "Content-type:  application/octet-stream "); 
         header( "Accept-Ranges:  bytes "); 
         header( "Content-Disposition:  attachment;  filename= {$date}.doc"); 
         $size=readfile($filename); 
         header( "Accept-Length: " .$size);
    }
    $url="url地址";
    downfile($url);
?>

 

第二种:

<?php 
    function downfile($fileurl) {
        $filename=$fileurl;
        $file  =  fopen($filename, "rb"); 
        Header( "Content-type:  application/octet-stream "); 
        Header( "Accept-Ranges:  bytes "); 
        Header( "Content-Disposition:  attachment;  filename= 4.doc"); 
        $contents = "";
        while (!feof($file)) {
            $contents .= fread($file, 8192);
        }
        echo $contents;
        fclose($file); 
    }
    $url="url地址";
    downfile($url);
?>

 

PHP实现下载文件的两种方法

方法1:

<?php
    /**
    * 下载文件, header函数实现
    */
 
    header(&#39;Content-Description: File Transfer&#39;);
    header(&#39;Content-Type: application/octet-stream&#39;);
    header(&#39;Content-Disposition: attachment; filename=&#39;.basename($filepath));
    header(&#39;Content-Transfer-Encoding: binary&#39;);
    header(&#39;Expires: 0′);
    header(&#39;Cache-Control: must-revalidate, post-check=0, pre-check=0′);
    header(&#39;Pragma: public&#39;);
    header(&#39;Content-Length: &#39; . filesize($filepath));
    readfile($file_path);
?>

了解php中header函数的用法

 

方法2:

<?php
    //文件下载, readfile实现
    $fileinfo = pathinfo($filename);
    header(&#39;Content-type: application/x-&#39;.$fileinfo[&#39;extension&#39;]);
    header(&#39;Content-Disposition: attachment; filename=&#39;.$fileinfo[&#39;basename&#39;]);
    header(&#39;Content-Length: &#39;.filesize($filename));
    readfile($thefile);
    exit();
?>

 

推荐学习:《PHP视频教程

The above is the detailed content of How to save files in php. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn