axios接受文件流并下载

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

需求场景

前端发送请求,后端传回文件流,前端接受到后立刻打开下载窗口下载文件

注意事项

请求api需要添加:responseType:'blob', axios拦截器拦截错误状态码 (假设是code) 那里的ifres.code != 200改为res.code && res.code != 你们约定的成功状态码

如果不添加responseType:'blob',那么无法解析响应数据, 会出现乱码

这是解析后的响应信息,我们下载文件需要用到data里的数据
axios接受文件流并下载,前端学习,项目笔记,vue-admin-template使用记录,vue.js,前端,javascript

请求API封装

import request from '@/utils/request'

export function downloadExcel(semesterId){
  return request({
    url: '你的请求接口',
    method: 'GET',
    params:{
      semesterId
    },
    responseType:'blob'  // 重点
  })
}

接收响应数据并下载

以我获取excel文件并下载为例

总体思路都是: 获取url、创建<a>标签,设置href,触发其click事件,完成下载,移除<a>标签文章来源地址https://www.toymoban.com/news/detail-633919.html

            downloadExcel(this.semesterId)
            .then(data => {
            	// 我这里在拦截器里直接返回的response.data
                if(!data){
                    this.$message.error('获取Excel文件失败')
                    return;
                }

                let fileUrl = window.URL.createObjectURL(new Blob([data]))
                let a = document.createElement('a')
                a.style.display = "none"
                a.href = fileUrl
                a.setAttribute('download', `${this.semesterName}积分排行榜.xlsx`) // 注意文件后缀
                document.body.appendChild(a)
                a.click()
                window.URL.revokeObjectURL(a.href)
                document.body.removeChild(a)
            }).catch ((e) => {
                console.log("文件下载出错: ", e)
             }) 

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

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

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

相关文章

  • git学习笔记 - 下载gitlab项目

    一种是下载gitlab的master主分支的内容: 另一种下载指定分支的gitlab项目内容: 拓展 : 如果当你clone出现一些问题, 尤其是 timeout 相关问题, 可以如下操作: 在之前的 git clone http://xxxx 中的网址前面添加 https://ghproxy.com/ .

    2024年02月09日
    浏览(30)
  • axios下载csv文件下载-功能实现

    须将axios 配置中的 responseType 设置为 arraybuffer  

    2024年02月05日
    浏览(38)
  • 前端使用axios上传文件

    不用脚手架,引入vue,上传文件实现代码? 要在不使用脚手架的情况下,引入 Vue 并实现上传文件的功能,可以按照以下步骤进行: 在 HTML 文件中引入 Vue 和 Axios 库: 在 HTML 文件中定义 Vue 实例,并编写上传文件相关的代码: 在上述示例中,我们首先在 HTML 文件中定义了一

    2024年02月04日
    浏览(34)
  • 下载 axios.js 文件到本地

    1.网址:GitHub - axios/axios: Promise based HTTP client for the browser and node.js 2. 3.   4.直接引用script src=\\\"https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js\\\"/script

    2024年02月08日
    浏览(26)
  • 前端通过http获取图片流并转存

            昨天公司里面提了一个需求,将竞争对手的sku通过一些手段导入我们自己的数据库,普通数据比较好搞,但是图片这种静态资源我们只能获取到一个url,所以需要进行一次转存。         这里有两个思路,一个是交给后端来做这个事情,但是后端做的话,会暴露我们

    2024年02月14日
    浏览(41)
  • Python学习笔记:Requests库安装、通过url下载文件

    在pipy或者github下载,通常是个zip,解压缩后在路径输入cmd,并运行以下代码  安装完成后,输入python再输入import requests得到可以判断时候完成安装  2.通过url下载文件 使用的是urllib模块

    2024年02月10日
    浏览(27)
  • 前端框架Vue学习 ——(四)Axios

    介绍: Axios 对原生的 Ajax 进行了封装,简化书写,快速开发。(异步请求) 官网: https://www.axios-http.cn/ 官网介绍:Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块

    2024年02月05日
    浏览(38)
  • 前端学习--Ajax(3) XHR/axios

    1.1 概念 XMLHttpRequest(XHR)是一种用于在客户端和服务器之间发送HTTP请求的JavaScript API。它允许客户端在不重新加载整个页面的情况下向服务器发送请求,并根据服务器的响应更新页面的局部内容。Ajax是基于XHR封装的。 1.2 使用xhr发起get请求 步骤 创建XHR对象 调用XHR.open()函数

    2023年04月26日
    浏览(24)
  • vue axios实现下载文件及responseType:blob注意事项

    需要使用axios和js-file-download组件 注意事项: responseType:blob表示服务器返回的响应类型是二进制流,一般用于文件、视频下载等场景。正常情况下后端返回二进制数据,当后端服务器出错时,往往会以json形式返回错误信息,例如{\\\"code\\\":500,\\\"msg\\\":\\\"未知异常\\\"}。因为设置了blob类型,

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

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

    2024年04月25日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包