本文操作环境:windows7系统、PHP7.1版,DELLG3电脑
php保存文件的方法
PHP下载保存文件到本地
经常需要点击按钮,然后弹出一个对话框,保存下载文件。
最常见的方式,就用<a>链接实现,例如:
<ahref="xxx/youfile.txt">youfile.txt</a>
本文介绍的下载保存方式,是通过生成文件后,然后用代码实现下载保存。
完整示例(推荐)
<?php
/**
*下载文件header函数
*copyright by www.why114.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>
<divstyle='margin-left:20px'>
<br>
<fontcolor='blue'>$file_basename</font>是临时文件已过期,服务器不保存!
<br><br>
请提取最新代理:<ahref='../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);
echofread($file,$file_filesize);
fclose($file);
//echofile_get_contents($filename);
//readfile($filename);
}
//下载或取消后,删除临时文件
$del_result=@unlink($res_filepath);
if($del_result==true){
@unlink($res_filepath);
}
?>
网上其他方式
第一种:
<?php
functiondownfile(){
$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");
echofile_get_contents($filename);
readfile($filename);
}
downfile();
?>
或
<?php
functiondownfile($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
functiondownfile($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函数实现
*copyright by www.92jzh.com
*/
header('Content-Description:FileTransfer');
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();
?>