博客地址:https://ainyi.com/65 解释 | 背景 看到标题有点懵逼,哈哈,实际上是后端将文件处理成二进制流,返回到前端,前端处理这个二进制字符串,输出文件或下载 最近公司有个需求是用户在点击下载文件(pdf)的时候,下载地址不能暴露在接口的返回值,前端不要通过这个地址下载 ...
比如前后端约定,下载成功返回二进制流,下载失败返回对象 code: , msg: 失败原因 问题:当下载文件时,axios配置responseType: blob ,此时后台返回的数据会被强制转为blob类型 如果后台返回失败对象,前端也无法得知,如果按正常处理会得到名为undefined的文件。 解决:在try代码块里面尝试将axios已经转成blob格式的res转回json格式,如果不报错说明 ...
2021-12-10 16:39 0 160 推荐指数:
博客地址:https://ainyi.com/65 解释 | 背景 看到标题有点懵逼,哈哈,实际上是后端将文件处理成二进制流,返回到前端,前端处理这个二进制字符串,输出文件或下载 最近公司有个需求是用户在点击下载文件(pdf)的时候,下载地址不能暴露在接口的返回值,前端不要通过这个地址下载 ...
思路: 1、通过 const blog = new Blob([data.data], { type: 'image/jpeg' }) 获取blob对象 2、通过 const url = window.URL.createObjectURL(blog) 获取blob地址 ...
处理逻辑:获取返回文件流,通过 Blob 对象构造文件后下载。 function download(data, filename, type="application/vnd.ms-excel") { let file = new Blob([data], { type ...
1、首先看没处理时接口返回的数据,会发现是乱码的。。。 2、解决乱码需要在请求接口时,加上配置responseType: 'blob',例如在vue中使用axios的http请求 加上之后返回的数据就是这样的 3、接下来就是处理数据文件并下载 ...
https://blog.csdn.net/codezha/article/details/103372485?utm_medium=distribute.pc_relevant.none-task- ...
ArrayBuffer又称类型化数组。 数组里面可以放数字、字符串、布尔值以及对象和数组等,ArrayBuffer放0和1组成的二进制数据 数组放在堆中,ArrayBuffer则把数据放在栈中(所以取数据时后者快) ArrayBuffer初始化后固定大小,数组则可以自由增减 ...
用axios正常发送请求下载excel会出现以下问题,即将二级制流文件下载到了本地,下附解决办法: 一、实现思路: 这类方法思路如下: 1. 使用js在页面常见a标签 2. 创建Blob对象, 在Blob中传入后端返回的response.data 这一步中Blob需要的是一个 ...
补充方法: ...