本文操作环境: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(); ?
?> ?
相关文章
- 06-20php保存文件和下载文件到本地的四种方法
- 06-20python,下载图片到本地自定文件夹内的方法
- 06-20nodejs下载图片到本地,根据百度图片查找相应的图片,通过nodejs保存到本地文件夹
- 06-20下载保存文件到手机本地前, 优先选择位置的一个取巧方法
- 06-20下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法
- 06-20php保存文件和下载文件到本地的四种方法
- 06-20django实现图片上传后自动修改尺寸并保存修改后的图到数据库和本地文件系统
- 06-20使用昨天Asp.net直接保存文件到客户端 中的方法,经过我的反复测试,各式文档都运行完全正常。于是昨晚修改了现有代码,修改了下载方法,以解决一直困扰自己的窗口拦截问题。
- 06-20【转】php 下载保存文件保存到本地的两种实现方法