PHP 下载文件【通用版本】

学习笔记 马富天 2018-12-29 14:54:10 26 0

【摘要】通常来说在 web 网页上 , 下载文件的时候,如果浏览器不能识别的文件,浏览器就会自动去识别,而我们想实现无论是什么格式,无论浏览器是否识别,都能够有效的下载该文件。

本文给出一个完整例子用于下载 docx , jpg , mp4 , txt , html ,xlsx , zip , php , gif , pptx , pdf 等等各格式的文件通用版本代码,完整如下:

  1. //	下载文件名(在当前目录下)
  2. $file = "中文.txt";
  3. //	文件名称存在中文的时候,需要进行编码转换
  4. //	即将 utf-8 编码转成 gb2312 编码
  5. $file = iconv('UTF-8','GB2312',$file);
  6. //	任意的二进制数据 , 不特指下载的文件类型,这样可以下载各类型格式的文件
  7. //	若指定某种格式,可以将其进行修改
  8. header('content-type:application/octet-stream');
  9. //	告诉浏览器通过附件形式来处理文件
  10. header('content-disposition:attachment;filename='.$file);
  11. header('content-length:'.filesize($file));	//	文件大小
  12. //	输出文件
  13. echo file_get_contents($file);

另外给出一个小提示,网上很多的代码都是,在 "filename=" 的时候会用到 basename():

header('content-disposition:attachment;filename='.basename($file));

然而当 $file = "中文.txt" 是中文的时候,basename() 返回的是空,这个是一个 PHP 内置函数 basename() 的一个不足,最好的办法就不用这个函数来获取文件名。可以用当前时间、或时间戳、随机数来命名就可以。

这个文件是 basename() 函数不能够获取中文文件名的问题,这个问题以后有机会的时候再处理。

版权归 马富天PHP博客 所有

本文标题:《PHP 下载文件【通用版本】》

本文链接地址:http://www.mafutian.net/405.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 mysql 随机查询 rand() 详细介绍 》 下一篇《 使用 sha1_file() 判断两个图片(或者文件)是否完全相同 》

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多