你是否遇到同样的问题?
最后效果:
问题:
其他浏览器下载文件正常
Safari
浏览器下载word文件,后缀多拼接了.html,导致打开下载文件乱码,下载的文件名称为vcard.vcf,手动去掉多余的后缀.html即可正常访问vcf文件(最残忍的办法).
解决方案:
将文件在服务器保存,然后将url地址返回给前端,让前端将文件进行下载。
服务器核心代码:
$data = [
'code' => 0,
'msg' => '',
'count' => 0,
'data' => request()->domain().$filename,
'name' => basename($filename)
];
return json($data);
前端代码:
$.get('exports?number='+number+"&index_id="+index_id, function (data, ret) {
fetch(data.data).then((res) =>
res.blob().then((blob) => {
let a = document.createElement("a");
let url = window.URL.createObjectURL(blob);
a.href = url;
a.download = data.name;
a.click();
window.URL.revokeObjectURL(url);
})
);
});
以上。
其他设置header什么的,不起什么作用。不用尝试了。
nginx设置也没什么用。
版权声明:本文为Dyaping原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。