2 回答

TA贡献1895条经验 获得超3个赞
axios.post('api/downloadMyFile',
data
).then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]))
const a = document.createElement('a');
a.href = url;
a.download = "test.zip"
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
}).catch((err) => {
}
所以文件test.zip正在下载。但是当我保存后尝试打开它时,我在 Windows 中收到压缩 Zip 文件夹错误。
另外,我注意到我不需要在行中指定文件的名称,a.download = "test.zip" 因为网络服务正在从共享存储中获取文件并且它已经有一个名称。那么在这种情况下,我是否还需要在response对象中包含文件名?类似的东西response.filename,这样我就可以在下面的行中使用它,而不是手动命名它:
a.download = response.filename

TA贡献1798条经验 获得超3个赞
尝试这两行从响应对象中获取文件名
var filename = response.headers.get("content-disposition");
filename = filename.match(/(?<=")(?:\\.|[^"\\])*(?=")/)[0];
添加回答
举报