需求

点击导出下载表格对应的excel文件

在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api

实现

第一步,在 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)

}

问题

使用 axios 会出现无法拿到 java 后端给出的 Content-Disposition 中的文件名

注意的是,浏览器中可以看到header中有信息,但是无法通过 axios 的 res.header 获取到

这种情况需要后端设置 header

Access-Control-Expose-Headers: Content-Disposition

有可能后端加了之后还是获取不到,那么让后端单独加一个fileName字段即可

response.setContentType("multipart/form-data");

response.setCharacterEncoding("utf-8");

response.setHeader("Content-disposition", "attachment;filename=" + UUID.randomUUID().toString() + ".xlsx");

response.setHeader("FileName", UUID.randomUUID().toString() + ".xlsx");

response.setHeader("Access-Control-Expose-Headers", "FileName")

总结

完整的 axios 代码

axios.post({

url:`url`,

method:`post`,

responseType: "blob"

}).then(res => {

let blob = res.data

let reader = new FileReader()

reader.readAsDataURL(blob)

reader.onload = (e) => {

let a = document.createElement("a")

a.download = `fileName.xlsx`

a.href = e.target.result

document.body.appendChild(a)

a.click()

document.body.removeChild(a)

}

})

ps:vue-axios的使用方法(简单易懂)

1.vue-axios插件的安装

使用 npm:

$ cnpm install axios

2.在main.js中添加(添加到原型链上)

import axios from "axios";

Vue.prototype.axios = axios;

完活,然后就可以随便在任何组件开始用了,耶!^-^!

例子:

this.axios.post("http://ai.yiche.com/web/ability/nlu/standardTokenizer", {

"text": "动效如果有跟评审结论有出入的地方或者不清楚的地方,随时沟通哈~"

}).then(function(res) {

console.log(res.data);

}).catch(function(err) {

if (err.response) {

console.log(err.response)

}

});

以上所述是小编给大家介绍的在vue中使用axios实现post方式获取二进制流下载文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对云海天教程网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...相关推荐

  1. .vue文件 转换成html,在vue中把含有html标签转为html渲染页面的实例

    在vue中把含有html标签转为html渲染页面的实例 在标签内部添加v-html指令即可 使用pug的写法: 这个content表示的是一个含标签的变量 输入content为: 我是p标签 输出结果 ...

  2. java中获取文件总行数_关于java:如何以有效的方式获取文件中的行数?

    本问题已经有最佳答案,请猛点这里访问. 我有一个大文件. 它包括大约3.000-20.000行. 如何使用Java获取文件中的行总数? 从你的评论到答案来判断,你要找的词是"有效的" ...

  3. 【Kotlin 协程】Flow 异步流 ② ( 使用 Flow 异步流持续获取不同返回值 | Flow 异步流获取返回值方式与其它方式对比 | 在 Android 中使用 Flow 异步流下载文件 )

    文章目录 一.使用 Flow 异步流持续获取不同返回值 二.Flow 异步流获取返回值方式与其它方式对比 三.在 Android 中 使用 Flow 异步流下载文件 一.使用 Flow 异步流持续获取 ...

  4. android home跳转,Android 中按home键和跳转到主界面的实例代码

    Android 中按home键和跳转到主界面的实例代码 //home Intent intent= new Intent(Intent.ACTION_MAIN); intent.setFlags(In ...

  5. vue 文件转换二进制_vue项目将file转换成二进制流

    前端在新增数据时,需要将附件和表单数据一起上传,此时需要将文件转换成二进制流传给后端.记录将文件转换成二进制流 ref="uploadProduct" class="up ...

  6. vue项目的停止_基于Vue项目开发中遇到的坑及终结

    之前一直在公司忙项目,忙项目的,好歹是发布了1.0版本.终于是有时间写一个总结了. 话说我就一个实习生一进来就要做项目核心,真的有点受宠若惊,还好项目是1.0版本,先实现部分功能,访问量也不大,加上一 ...

  7. vscode输入vue自动_使用vscode,新建.vue文件,tab自动生成vue代码模板

    第一步: 新建模板并保存 文件 --> 首选项 --> 用户代码片段 --> 输入vue,选择vue.json -->复制 第三步中的模板内容中内容保存 第二步: 添加配置,让 ...

  8. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  9. vue连线 插件_【Vue CLI】手把手教你撸插件

    现如今 Vue 作为主流的前端框架之一,其健全的配套工具,活跃的开源社区,让广发码农热衷追捧.Vue CLI 作为其官方的开发构建工具,目前已更新迭代到 4.x 版本,其内部集成了日常开发用到的打包压 ...

最新文章

  1. 菜鸟的DUBBO进击之路(八):配置抽离导致${jdbc.url}被当成字符串处理
  2. JConsole的使用
  3. iOS开发-单例模式
  4. linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...
  5. 还在为周会发愁?你需要这13篇最新论文 | 本周值得读
  6. 笔记本鼠标乱跑!不知何故!
  7. 安装composer以及laravel框架
  8. Dailymotion 视频下载神器,喜欢太阳的后裔的人有福了!
  9. php 5.5 缓存,PHP 5.5 FastCGI缓存
  10. 【上外青年】人物 ‖ 何晗:天才都是异类
  11. ttl接地是高电平还是低电平_数电练习题
  12. java-php-python-ssm校园流浪猫图鉴管理系统的设计与实现计算机毕业设计
  13. Google浏览器下载地址
  14. 用html做祝福语朋友,朋友关怀祝福语(把祝福语化作露带给你)
  15. 一个nginx小白的vue项目部署的成功!
  16. 荣耀30sr升级鸿蒙,华为荣耀30怎么升级鸿蒙系统?
  17. 安卓(调试)有线投屏、wifi投屏到电脑笔记
  18. rfc 5766 TURN 中文
  19. 谷歌浏览器查看网页源代码
  20. 【Java版oj】逆波兰表达式求值

热门文章

  1. 30 | 图的表示:如何存储微博、微信等社交网络中的好友关系?
  2. (JAVA)超大小数运算
  3. android 杀 服务器,android busybox httpd搭建简单web服务器
  4. 2021辽宁大洼高中高考成绩查询,2021大洼高中最后一跑——励志高考,逆袭人生...
  5. 【离散数学中的数据结构与算法】四 加法法则与乘法法则
  6. 关于linux系统中无法识别某一命令问题的解决方案
  7. 吞吐量(TPS)、QPS、并发数、响应时间(RT)
  8. 6.0动态加载权限用PermissionGen
  9. 深入理解Spring Redis的使用 (五)、常见问题汇总
  10. WebStorm 快捷键整理