vue 处理二进制文件流下载,封装请求

后端返回的文件流

前端需要处理成下载文件

刚开始一直报错

处理的方法

// http.js
import instance from './axios';

export const get = (url, params = {}, config = {}) => instance.get(url, { params, ...config });

// api.js
/**
 * 获取下载错误信息
 * @param {string} batchId - 批次ID
 * @returns {Promise} - 返回一个Promise对象,用于异步获取服务器响应
 */
export const downloadErrorMessage = (batchId, config = {}) => {
  return get(`/admin/finance/enterprise-authorization/downloadErrorMessage/${batchId}`, {}, config);
};

重点就是config配置 responseType: 'blob'

页面代码

  downloadErrorMessage(res.data.batchId, { responseType: 'blob' }).then((response) => {
                  // 处理二进制数据并创建 Blob 对象
                  const blobObj = new Blob([response.data], {
                    'content-type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
                  });
                  saveAs(blobObj, 'error.xls'); // 这个是用的插件,不用插件可以自己创建a标签
                  handleClose();
                  emits('init');
                });

插件使用

使用 npm 安装 FileSaver.js:

npm install file-saver --save

页面引入

import { saveAs } from 'file-saver';

不用插件可以用a标签代替

相关推荐
编程乐趣15 分钟前
Eval-Expression.NET:动态执行C#脚本,类似Javascript的Eval函数功能
javascript·c#·.net
晨辰星6617 分钟前
Vue2中使用Echarts
前端·javascript·echarts
CodeToGym23 分钟前
三分钟在你的react项目中引入tailwindcss
前端·react.js·前端框架·tailwindcss
时间sk30 分钟前
CSS——10.类选择器
前端·css
我真不会起名字啊33 分钟前
QtJson数据格式处理详解
java·前端·javascript
djk888840 分钟前
js将object整个实体对象作为参数传递
开发语言·javascript·ecmascript
【D'accumulation】1 小时前
基于 Node.js 的 ORM(对象关系映射)工具——Sequelize介绍与使用,并举案例分析
前端·javascript·学习·node.js·express
一个处女座的程序猿O(∩_∩)O1 小时前
vue3 如何封装aixos
前端·javascript·vue.js
YaHuiLiang2 小时前
小微互联网公司与互联网创业公司的技术之殇 - "新"技术的双刃剑
前端·后端·架构
桃园码工2 小时前
3_TypeScript 运算符 --[深入浅出 TypeScript 测试]
前端·javascript·typescript