前端基于axios请求下载文件(后端返回Blob文件流)

这篇具有很好参考价值的文章主要介绍了前端基于axios请求下载文件(后端返回Blob文件流)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端小白第一篇csdn文章就当自己记录学习啦!

我自己遇到的情况写在前面防止有人和我不一样,浪费时间浏览;

调用下载接口后端给我返回的数据格式(即文件流格式)如下:

前端基于axios请求下载文件(后端返回Blob文件流)

1.按钮定义点击事件

前端基于axios请求下载文件(后端返回Blob文件流)

2.调用后端接口

在使用 axios 请求下载文件 api 接口时,注意区分不同请求方法的使用,语法如下:

// axios设置reponseType的方式应该类似下面
const url = '/info/download'
 
// get、delete、head 等请求
axios.get(url, {params: {}, responseType: 'blob'})
    .then((res) => {})
    .catch((err) => {})
 
// post、put、patch 等请求
axios.post(url, {...params}, {responseType: 'blob'})
    .then((res) => {})
    .catch((err) => {})

3.具体实现代码如下(可直接复制粘贴):

注:service是封装了axios

前端基于axios请求下载文件(后端返回Blob文件流)

 

 download() {

      service({

        method: "get",

        url: `后端提供的接口`,

        responseType: "blob",

      }).then((res) => {

        console.log(res);

        console.log(res.data.type);

        let blob = new Blob([res.data], { type: res.data.type });

        let url = window.URL.createObjectURL(blob);

        console.log(url);

        let link = document.createElement("a");

        link.style.display = "none";

        link.href = url;

        link.setAttribute("download", "文件名+后缀");//文件名后缀记得添加,我写的zip

        document.body.appendChild(link);

        link.click();

        document.body.removeChild(link);//下载完成移除元素

        window.URL.revokeObjectURL(url);//释放掉blob对象文章来源地址https://www.toymoban.com/news/detail-501441.html

到了这里,关于前端基于axios请求下载文件(后端返回Blob文件流)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • axios请求设置responseType为‘blob‘或‘arraybuffer‘下载时,正确处理返回值

    问题:调用后台图片接口,后台返回二进制流图片数据格式。前端接收到流后处理数据显示在img标签。 解决: 1、设置axios接收参数格式为\\\"arraybuffer\\\": 2、转换为base64格式图片数据在img标签显示: 返回的string直接放在img标签src可直接显示 二、设置axios接收参数格式为\\\"blob\\\":

    2023年04月09日
    浏览(45)
  • 前端下载后端返回的文件流,取请求头中的文件名称

    但是用上面的方法发现只能顺利下载文件, res.headers[\\\"content-disposition\\\"] 取不到后端给前端返回的请求头。 通过问题排查发现: 如图,前端需要取的 res.headers 和 res.data 是一层的,当拦截器中返回 res.data 后,就取不到外层的 headers, 因此前端要自己写 axios 请求方法 但是前端依

    2024年02月01日
    浏览(47)
  • 后端返回数据流,前端进行转换blob文件流

    1. 首先相应的头里面请求改为 responseType: \\\'blob\\\' 2.           let res = await getPhotoVideoUrl() --此处为模拟的获取一个视频流的地址;         const img = new Blob([res], { type: \\\'image/png\\\' });         let imgUrl = window.URL.createObjectURL(img); 3.拿到流的地址后,先进行new Blob进行创建一个对象。

    2024年02月13日
    浏览(42)
  • 文件流下载之——axios请求responseType为blob时,错误数据处理

    背景:一个文件下载的需求,如果成功下载data数据返回的是文件流,如果失败后端会返回失败信息,类似{code: -1, data: null, msg: ‘xxx’}。然而如果用responseType: \\\'blob’去接文件流的话,返回的错误信息也会转为blob数据格式。我们需要对返回错误信息的数据做处理,页面上提示

    2024年02月13日
    浏览(69)
  • 解决axios请求文件流前端通过new Blob完成文件流下载文件打不开

    目录 1.首先请求封装axios的请求方式 2.根据接口文档查看文件流的请求类型 3.请求Methods 4.以上写完以后,好消息是文件可以成功下载 4.1坏消息是文件竟然是个损坏文件打不开,修复了也是乱码 5.解决问题 5.1 前端做文件下载有很多方式,前端返回文件流需要我们在axios请求封

    2024年04月25日
    浏览(46)
  • 前端下载文件流,设置返回值类型responseType:‘blob‘无效的问题

    本是一个非常简单的请求,即是下载文件。通常的做法如下: 1.前端通过Vue Axios向后端请求,同时在请求中设置响应体为Blob格式。 2.后端相应前端的请求,同时返回Blob格式的文件给到前端(如果没有步骤1设置响应体,则后端返回的是一个文件流,前端) 3.前端创建a标签进行

    2024年01月17日
    浏览(73)
  • 后端返回文件流,前端怎么导出、下载

            工作中肯定有很多导出excel、下载文件这种功能。一般都是后端做好,我们去请求对应的接口就行了,前端还需要做一些处理就可以实现导出、下载功能了。具体怎么操作呢,我们来看看!         我们在请求的时候 需要定义responseType【响应类型】为blob类型,如果

    2024年02月12日
    浏览(58)
  • 后端返回base64文件前端如何下载

    1.后端返回base64格式文件 2.前端代码 3.请求封装

    2024年02月05日
    浏览(62)
  • 前端处理后端返回的文件流,进行文件下载

    二进制流格式  Blob格式 前言:         需求:根据后端接口返回的文件流进行数据处理,并实现文件的下载,且下载文件为word文档. 封装下载文件接口: 最开始没带 responseType:\\\"Blob\\\" ,进行文件下载后,里面的内容全部是乱码!!! 代码实现:  知识点补充:         1、n

    2024年02月07日
    浏览(61)
  • Java后端向前端返回文件流——实现下载功能!

    前端实现文件下载功能有多种方法,这里就不一一介绍,这里只介绍使用文件流下载的实现方法。 既然是文件流那就肯定需要给前端返回一堆二进制编码,作为后端就可以返回一个 OutPutStream 后端可以使用Java中servlet提供的 HttpServletResponse ,核心步骤是要设置响应的数据类型

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包