// 错误方法:
saveBlob(blob, fileName) {
const element = document.createElement('a');
element.setAttribute('download', fileName);
element.setAttribute('href', window.URL.createObjectURL(new Blob(blob)));
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
// 会报错
// TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.

因为Chrome更新后不支持这种用法
new Blob(blob), blob需要是数组格式
// 正确写法:
saveBlob(blob, fileName) {
const element = document.createElement('a');
element.setAttribute('download', fileName);
let binaryData = [];
binaryData.push(blob);
element.setAttribute('href', window.URL.createObjectURL(new Blob(binaryData)));
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
发现下载文件打不开问题:需修改请求头
{
method: 'get',
responseType: 'arraybuffer',
params
}
在Chrome新版本中,直接下载文件的方式不再适用,现在需要将后端返回的数据流转换为Blob数组格式。文章探讨了在遇到下载文件打不开的问题时,如何调整请求头和处理数据流,确保前端能正确下载文件。

4万+

被折叠的 条评论
为什么被折叠?



