首页 / PHP / php如何实现文件下载
php如何实现文件下载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php如何实现文件下载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1786字,纯文字阅读大概需要3分钟。
内容图文
![php如何实现文件下载](/upload/InfoBanner/zyjiaocheng/209/d2116a4a43b641f199b6d216daf50763.jpg)
1. 设置超链接的href属性
如果浏览器不能解析该文件,浏览器会自动下载。而如果文件是图片或者txt,会直接在浏览器中打开。
2. 输出文件流
//download.php
//页面加载的时候就调用
downloadFile("3.rar","something.rar");
//$filePath是服务器的文件地址
//$saveAsFileName是用户指定的下载后的文件名
function downloadFile($filePath,$saveAsFileName){
// 清空缓冲区并关闭输出缓冲
ob_end_clean();
//r: 以只读方式打开,b: 强制使用二进制模式
$fileHandle=fopen($filePath,"rb");
if($fileHandle===false){
echo "Can not find file: $filePath\n";
exit;
}
Header("Content-type: application/octet-stream");
Header("Content-Transfer-Encoding: binary");
Header("Accept-Ranges: bytes");
Header("Content-Length: ".filesize($filePath));
Header("Content-Disposition: attachment; filename=\"$saveAsFileName\"");
while(!feof($fileHandle)) {
//从文件指针 handle 读取最多 length 个字节
echo fread($fileHandle, 32768);
}
fclose($fileHandle);
}
杭州php工程师注:
(1)download.php可以设置为标签的href属性,点击标签,则浏览器会提示下载。
(2)jQuery模拟触发的click事件时有bug,应该使用html对象的click方法。$('#hyperLink')[0].click();
(3)jQuery Mobile会改变的行为。所以,在使用jQuery Mobile时,无论手动点击还是java模拟点击,都会跳转到download.php页面,并不会触发下载。(4)location.href或location.replace定向到download.php也可以实现下载。这种方法不受jQuery Mobile的影响。
(5)以上两种方法进行下载时,chrome会提示“Resource interpreted as Document but transferred with MIME type application/octet-stream”。为增加html5属性download可以解决这个问题。而location.href或location.replace触发的下载,暂无办法解决。
内容总结
以上是互联网集市为您收集整理的php如何实现文件下载全部内容,希望文章能够帮你解决php如何实现文件下载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。