api({}).then((res) => {
if (res.data.size !== 0) {
const attrs = res.headers['content-disposition'].split(';'); // 获取原文件格式
let fileName = ''; // 获取文件名
for (let i = 0, l = attrs.length; i < l; i++) {
// 不用管fileName在第几个位置,只要=前面是fileName,就取=后面的值
let temp = attrs[i].split('=');
if (temp.length > 1 && temp[0].trim() === 'filename') {
fileName = temp[1];
break;
}
}
const type = res.headers['content-type'].split(';')[0]; // 获取原文件类型
const url = URL.createObjectURL(new Blob([res.data], { type })); // 后端返回的数据
// 创建a标签
const tagA = document.createElement('a');
tagA.style.display = 'none';
tagA.href = url;
tagA.download = decodeURIComponent(fileName); // 下载后文件名
document.body.appendChild(tagA);
tagA.click();
document.body.removeChild(tagA);
window.URL.revokeObjectURL(url);
if (callback) {
callback();
}
} else {
message('文件内容为空!', { type: 'warning' });
}
});
后端返回文件流处理
于 2024-03-28 11:21:55 首次发布