Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码

1、遇到的问题

谷歌和ie下载文件正常

Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为test.doc.html,手动去掉多余的后缀.html即可正常访问word文件

2、原因

经排查代码中设置head头为text/html导致的,safari才拼接了后缀.html;修改为

header("Content-type:applicatoin/octet-stream;charset=utf-8");完美解决问题

Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码_第1张图片

3、转载延伸

在谷歌、火狐等浏览器中,Content-type 的设置貌似并不重要,但在 Safari 上则有不同:

  • 当 Content-type 设置为 text/html 时,下载的文件会被自动添加上后缀 .html;
  • 当设置为 application/x-msdownload 时,下载的文件会被自动添加后缀 .exe。

content-type 用于告诉浏览器应该以何种方式处理文件。浏览器会尽量以可识别的方式来打开它,如图一为相关的测试情况:

Safari浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码_第2张图片

从图一可以看出,如果你觉得针对不同文件类型区别设置不同的 Content-type 太麻烦,那么将它设置为 applicatoin/octet-stream 是比较好的选择。

4、延伸

ie下载时,文件名称乱码,转下编码即可。

$saveFileName = iconv("UTF-8","GBK",$saveFileName);

https://blog.csdn.net/qq_36028303/article/details/80939774
https://www.cnblogs.com/jqy666/p/4957147.html

你可能感兴趣的:(important~.~)