解决:Safari浏览器下载文件,后缀多拼接了.html

  • Post author:
  • Post category:其他


你是否遇到同样的问题?

最后效果:

问题:

其他浏览器下载文件正常


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 版权协议,转载请附上原文出处链接和本声明。