本文操作环境: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='margin-left: 20px'> <br> <font color='blue'>$file_basename</font> 是临时文件已过期,服务器不保存! <br><br> 请提取最新代理: <a href='../fetch.php'>http://proxy.mimvp.com/api/fetch.php</a> <!-- <script> alert('" . $file_basename . "\\n是临时文件,服务器不保存! \\n\\n请重新提取最新代理'); </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('content-description: file transfer'); header('content-type: application/octet-stream'); header('content-disposition: attachment; filename='.basename($filepath)); header('content-transfer-encoding: binary'); header('expires: 0′); header('cache-control: must-revalidate, post-check=0, pre-check=0′); header('pragma: public'); header('content-length: ' . filesize($filepath)); readfile($file_path);?>
了解php中header函数的用法
方法2:
<?php //文件下载, readfile实现 $fileinfo = pathinfo($filename); header('content-type: application/x-'.$fileinfo['extension']); header('content-disposition: attachment; filename='.$fileinfo['basename']); header('content-length: '.filesize($filename)); readfile($thefile); exit();?>
推荐学习:《php视频教程》
以上就是php保存文件的方法的详细内容。
