后端返回了一节url 没有返回域名 前端自己拼接 但是用a标签download属性不生效,原因是跨域了,发布在测试环境就行了(或者就不要拼接前面的域名,直接用后端返回的部分url)
export const downloadFileChangeName = (url, fileName) => {
const a = document.createElement('a');
a.href = url;
a.download = fileName || "";
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
再如果不行 就把url转化为blob(但是会发起两次请求)
let baseUrl =
process.env.VUE_APP_BASE_API === "/hhh"
? "http://"
: process.env.VUE_APP_BASE_API;
let url = baseUrl + fileUrl
const xhr = new window.XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.send();
xhr.onload = () => {
if (xhr.status === 200) {
const url = window.URL.createObjectURL(xhr.response);
const a = document.createElement('a');
a.href = url;
a.download = fileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
};
}