前端js/vue下载后台传过来的流文件(如excel)并设置下载文件名
<a>标签下载文件重命名失败,download无效解决方案
//下载方法封装axios
export const GETFILE = (url, params) => {
return new Promise((resolve, reject) => {
axios({
method: "get",
url: `${base}${url}`,
params: params,
responseType: "blob" // 表明返回服务器返回的数据类型
}).then(res => {
resolve(res);
})
.catch(e => {
reject(e);
});
});
};
//下载方法调用
GETFILE(url, { planId }).then(value => {
let blob = new Blob([value.data]);
const fname = value.headers['content-disposition'].split('filename=')
let fileName = fname[1];
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
let link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = fileName;//文件名的后缀可以解决文件类型问题
link.click();
// 释放内存
window.URL.revokeObjectURL(link.href);
}
})
网友评论