chrome下载文件不预览的解决办法(兼容IE)
本文目录 [隐藏]
在html5中给a标签加了个download属性,只要加上即可实现下载,看似很美好,实际却有很多的限制。
1.在chrome下如果下载地址和网站跨域,它将默认打开文件预览,而不会自动下载,而我们的项目中文件都是放在oss上的,不可避免遇到这个问题。
我们的解决方案是由后端新增一个下载接口,我们把url和name传过去,然后后端返回下载好的文件流。
我们将文件流转换成blob对象
const blob = await response.blob();
创建一个链接,并触发click事件
const tmpUrl = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = tmpUrl;
a.download = decodeURI(options.fileName);
a.click();
2. firefox 下无法直接触发
const tmpUrl = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = tmpUrl;
a.download = decodeURI(options.fileName);
document.body.appendChild(a);
setTimeout(() => {
a.click();
a.remove();
}, 0);
3. IE浏览器提示拒绝访问,在tmpUrl前增加
if (navigator.appVersion.toString().indexOf('.NET') > 0) {
window.navigator.msSaveBlob(blob, options.fileName);
return;
}
最新文章
全部分类