前端实现将二进制文件流,并下载为excel文件
前端实现将二进制文件流,并下载为excel文件-腾讯云开发者社区-腾讯云
1、导入excel方法代码片段
// 导入时,接口调用,失败后得到文件流
axios(url, {
method: 'post',
responseType: 'blob',
url: '/api/import',
data: formData, // 导入文件一般都用FormData 格式数据
}).then(res => {
if(res.code === 200) {
// 导入成功
} else {
// 导入失败,需要将返回的文件流res.data进行转换
this.downloadBinaryFile(res.data, '导入失败后下载的报错文件')
}
})
2、二进制文件流转换成excel方法实现
/**
* 将二进制文件下载到本地,保存为excel文件
* @param {*} binFile 二进制文件流
* @param {*} fileName 下载后的文件名
* @param {*} blobType 文件格式
*/
downloadBinaryFile(binFile, fileName, blobType="application/vnd.ms-excel") {
const blobObj = new Blob([binFile], { type: blobType });
const downloadLink = document.createElement('a');
let url = window.URL || window.webkitURL || window.moxURL; // 浏览器兼容
url = url.createObjectURL(blobObj);
downloadLink.href = url;
downloadLink.download = fileName;
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
window.URL.revokeObjectURL(url);
}
vue进行下载与处理二进制流文件的方法详解_vue.js_脚本之家
Axios发送请求下载文件(重写二进制流文件) - 艺术诗人 - 博客园
解决axios传递数组参数问题 axios传递多个参数_jowvid的技术博客_51CTO博客
axios 下载文件且携带参数(Excel、Word...)_axios下载请求参数-CSDN博客
axios.get('/download-endpoint', {
params: {
arrayParam: ['item1', 'item2', 'item3'], // 数组参数
anotherParam: 'value' // 其他非数组参数
},
responseType: 'blob' // 指定响应类型为blob以正确处理文件下载
})