【发布时间】:2021-03-04 14:34:40
【问题描述】:
我有以下 vuex 下载文件的方法:
downloadFile(context, url) {
return new promise((resolve, reject) => {
const method = "GET";
axios
.request({
url: url,
method,
responseType: "blob"
})
.then(response => {
let fileURL = window.URL.createObjectURL(
new Blob([response.data]),
{
type: response.headers["content-type"]
}
);
let fileLink = document.createElement("a");
fileLink.href = fileURL;
let fileName = response.headers["content-disposition"].split(
"filename="
)[1];
fileLink.setAttribute("download", fileName);
document.body.appendChild(fileLink);
fileLink.click();
fileLink.remove();
resolve();
})
.catch(() => {
reject();
});
});
}
我通过 URL 链接(从 laravel API 获取)
块引用
下载的文件总是带有txt扩展名的问题
块引用
【问题讨论】:
-
您的服务器未发送屏幕截图中的文件扩展名。因此,您可以 1)修复您的服务器响应以包含扩展名,或 2)从
Content-Type推断扩展名 -
url中的扩展是否传递给downloadFile?如果是这样,你也可以从那里拿走。 -
不,它不包含扩展名
标签: vue.js download axios blob vuex