首页 > 代码库 > PHP实现文件下载
PHP实现文件下载
PHP实现文件下载
PHP下载文件
js下载文件
项目操作中不可避免要提供文件的下载,有时候要写一些逻辑判断或者提示啥,那下载的方法就需要做些调整。做个下载文件的集锦:
readfile — 输出文件 (手册上有说明:读入一个文件并写入到输出缓冲。)
<?php$file = ‘monkey.gif‘ ;if ( file_exists ( $file )) { header ( ‘Content-Description: File Transfer‘ ); header ( ‘Content-Type: application/octet-stream‘ ); header ( ‘Content-Disposition: attachment; filename=‘ . basename ( $file )); header ( ‘Content-Transfer-Encoding: binary‘ ); header ( ‘Expires: 0‘ ); header ( ‘Cache-Control: must-revalidate‘ ); header ( ‘Pragma: public‘ ); header ( ‘Content-Length: ‘ . filesize ( $file )); ob_clean (); flush (); readfile ( $file ); exit;} ?>
2.使用js实现文件下载,原理也是通过HTML5 a标签设置download属性就能实现。
<a href="http://www.mamicode.com/upload/user_excel/20161229.txt" download="20161229.txt"> 下 载 文 件 </a>
封装的方法也就是使用实现上述a标签的click事件。
#js通过HTML5 download属性实现下载文件 function DownloadFileJs( $dir,$filename ){ $url = $dir."/".$filename; $uploadjs = "<script type=\"text/javascript\" > var a = document.createElement(‘a‘); var url = \"".$url."\"; var filename = ‘".$filename."‘; a.href = http://www.mamicode.com/url;"; echo ($uploadjs); exit; }?>
调用测试如下:
$dir = ‘./upload/user_excel‘; $filename = ‘20161229.txt‘; DownloadFileJs( $dir, $filename );
个人觉得此种方法比较灵活,当然也是相对而言,比如在进行excel导入,后台在处理数据时需要反馈,弹出提示成功与否,再提供异常记录(或操作记录)的下载文件,使用js就比较易处理这个逻辑,而若使用第一种输出缓冲的方法,PHP语句会优先处理解析,会跳过提示,用户体验就不太好 。此种方法也有缺陷,它需要HTML5的支持,只要不是太过旧的浏览器都是支持的。当然也有其他的js方法下载,以后有机会会补充下去。
– 天行健,君子以自强不息!
PHP实现文件下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。