后端返回文件流,vue下载到本地
请求时需要设置responseType: “blob”,否则下载pdf文件打开会为空
下载方法代码如下:
//url请求参数
//params请求参数
//filename文件名称
export function download(url, params, filename) {
return service
.post(url, params, {
transformRequest: [
// (params) => {
// return tansParams(params);
// },
],
headers: {
"Content-Type": "application/json;charset=utf-8",
//"Content-Type": "application/x-www-form-urlencoded",
},
responseType: "blob",//关键
})
.then((data) => {
console.log(data);
const content = data;
const blob = new Blob([content]);
if ("download" in document.createElement("a")) {
const elink = document.createElement("a");
elink.download = filename;
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click();
URL.revokeObjectURL(elink.href);
document.body.removeChild(elink);
} else {
navigator.msSaveBlob(blob, filename);
}
})
.catch((r) => {
console.error(r);
});
}