/**
* @desc 下载
* @param {*} response - 请求返回数据 {data: Blob, headers: {}}
* @param {string} fileName - 文件名称 '机构账号导出3.xlsx'
* @example
* const response = {data: Blob, headers: {content-disposition: ''}}
* const fileName = '用户列表.xlsx'
* down(response, fileName)
*/
export const down = function (response, fileName = '') {
const blob = response.data;
const aEle = document.createElement('a');
const binaryData = [];
binaryData.push(blob);
if (!fileName) {
// 没传文件名,就用后台的filename, 后台也没有传就。。。。
const resHeader = response.headers['content-disposition'];
if (resHeader === undefined) {
console.error('数据为 undefined,无法导出!');
return;
}
if (resHeader.indexOf('filename=') !== -1) {
fileName = resHeader.split('filename=')[1];
} else {
fileName = resHeader.split('fileName=')[1];
}
fileName = decodeURIComponent(fileName || '');
}
// IE浏览器
if(navigator.msSaveBlob) {
return navigator.msSaveBlob(new Blob(binaryData), fileName)
}
aEle.href = window.URL.createObjectURL(new Blob(binaryData))
aEle.download = fileName;
aEle.click();
window.URL.revokeObjectURL(aEle.href);
};
// 根据url地址下载
export const download = (url) => {
var isChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;
if (isChrome || isSafari) {
var link = document.createElement('a');
link.href = url;
if (link.download !== undefined) {
var fileName = url.substring(url.lastIndexOf('/') + 1, url.length);
link.download = fileName;
}
if (document.createEvent) {
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
link.dispatchEvent(e);
return true;
}
}
if (url.indexOf('?') === -1) {
url += '?download';
}
window.open(url, '_self');
return true;
};
通过后端返回的url或者Blob二进制流下载对应的文件
于 2022-10-17 20:06:44 首次发布