在vue中怎么使用axios实现post方式获取二进制流下载文件

第一步,在 axios 请求中加入参数,表示接收的数据为二进制文件流

responseType: ‘blob’

第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实现文件下载功能

let blob = res.data
let reader = new FileReader()
reader.readAsDataURL(blob)
reader.onload = (e) => {
 let a = document.createElement('a')
 a.download = fileName
 a.href = e.target.result
 document.body.appendChild(a)
 a.click()
 document.body.removeChild(a)
}

以上这段代码中,首先从API的响应中获取了一个二进制数据流,然后创建了一个FileReader对象并将其用于将二进制数据流转换为base64编码的数据URL。

接着,在FileReader对象的onload事件中,创建了一个元素,分别为它设置了下载的文件名,数据URL,将其添加到文档中,并模拟点击该链接以下载文件。最后,将元素从文档中删除。

使用这段代码可以方便地实现在前端从API获得二进制数据并下载的功能。不过需要注意的是,由于数据被转换为base64编码,因此文件大小会变大,如果需要处理大型文件,可能需要采用流式传输等技术来解决。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐