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");完美解决问题
3、转载延伸
在谷歌、火狐等浏览器中,Content-type 的设置貌似并不重要,但在 Safari 上则有不同:
- 当 Content-type 设置为 text/html 时,下载的文件会被自动添加上后缀 .html;
- 当设置为 application/x-msdownload 时,下载的文件会被自动添加后缀 .exe。
content-type 用于告诉浏览器应该以何种方式处理文件。浏览器会尽量以可识别的方式来打开它,如图一为相关的测试情况:
从图一可以看出,如果你觉得针对不同文件类型区别设置不同的 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