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标签代替

相关推荐
盐真卿16 小时前
python2
java·前端·javascript
梦梦代码精16 小时前
BuildingAI vs Dify vs 扣子:三大开源智能体平台架构风格对比
开发语言·前端·数据库·后端·架构·开源·推荐算法
刘一说17 小时前
Vue3 组合式 API(Composition API):逻辑复用的革命性实践
vue.js·vue
seabirdssss17 小时前
《bootstrap is not defined 导致“获取配置详情失败”?一次前端踩坑实录》
前端·bootstrap·html
kgduu17 小时前
js之表单
开发语言·前端·javascript
摘星编程19 小时前
React Native for OpenHarmony 实战:Picker 选择器组件详解
javascript·react native·react.js
摘星编程19 小时前
React Native for OpenHarmony 实战:VirtualizedList 虚拟化列表
javascript·react native·react.js
谢尔登19 小时前
Vue3 响应式系统——computed 和 watch
前端·架构
愚公移码19 小时前
蓝凌EKP产品:主文档权限机制浅析
java·前端·数据库·蓝凌
摘星编程20 小时前
React Native for OpenHarmony 实战:RefreshControl 下拉刷新组件
javascript·react native·react.js