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

相关推荐
lsp程序员0101 小时前
使用 Web Workers 提升前端性能:让 JavaScript 不再阻塞 UI
java·前端·javascript·ui
J***Q2922 小时前
前端路由,React Router
前端·react.js·前端框架
1***81532 小时前
前端路由参数传递,React与Vue实现
前端·vue.js·react.js
q***13612 小时前
十七:Spring Boot依赖 (2)-- spring-boot-starter-web 依赖详解
前端·spring boot·后端
xixixi777773 小时前
了解一下Sentry(一个开源的实时错误监控平台)
前端·安全·开源·安全威胁分析·监控·sentry
Keely402854 小时前
学习编写chrome插件:Hello World 扩展
前端·chrome
hhcccchh4 小时前
学习vue第三天 Vue 前端项目结构的说明
前端·vue.js·学习
卷福同学5 小时前
【AI编程】用Codebuddy+lighthouse开发AI年龄模拟网站
javascript·后端
源力祁老师5 小时前
Odoo 19 制造与会计集成深度解析
前端·javascript·制造