前端实现将二进制文件流,并下载为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以正确处理文件下载})