解决vue下载后台传过来的乱码流的问题


Posted in Vue.js onDecember 05, 2020

后台返回的乱码流

解决vue下载后台传过来的乱码流的问题

解决办法:

请求方式用的是axios,主要加关键的 {responseType: 'blob'}

axios封装

export function postDownload(url, data) {
return new Promise((resolve, reject) => {


instance.post(url,data,{responseType: 'blob'}).then(response => {



resolve(response);


}, err => {



reject(err)


})

})
}

下载插件 npm install js-file-download -S

运用:

下载excel时,后台设置了excel标题,要去请求头去取,传输过程中文会有乱码的情况,需要编码下。

let fileDownload = require("js-file-download");

fileDownload(res.data,decodeURIComponent(res.headers['content-disposition'].split("=")[1]));

补充知识:vue下载后台接口返回的二进制流文件转为Excel文件

我就废话不多说了,大家还是直接看代码吧~

this.$http({
 method: "post",
 responseType:"arraybuffer",
 url: '导出接口地址' ,
 data:{}
}).then((res)=>{
 if (res.status === 200 && res.data) {
  var disposition = res.headers['content-disposition'];
  var fileName = decodeURI( disposition.split("filename=")[1].split(";filename*=")[0])
  let blob = new Blob([res.data], { type: 'application/.xls' }); //.xls是我和后台约定好的文件格式
  let link = document.createElement('a');
  link.href = window.URL.createObjectURL(blob);
  link.download = fileName;
  link.click();
  link.remove();

 }
},(err)=>{ var enc = new TextDecoder('utf-8')
 var res = JSON.parse(enc.decode(new Uint8Array(err.data))) //转化成json对象

});

此时注意 responseType:"arraybuffer", 在vue框架当中,数据请求是借助axios的,为此,在发送请求的时候,需要修改responseType,改为arraybuffer,axios默认情况下responseType为json,若是不修改,很可能下载时候会是乱码,或者为null。

以上这篇解决vue下载后台传过来的乱码流的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue 插槽简介及使用示例
Nov 19 Vue.js
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
Vue项目打包部署到apache服务器的方法步骤
Feb 01 Vue.js
前端vue+express实现文件的上传下载示例
Feb 18 Vue.js
vue整合百度地图显示指定地点信息
Apr 06 Vue.js
关于vue-router-link选择样式设置
Apr 30 Vue.js
vue如何清除浏览器历史栈
May 25 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 #Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 #Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 #Vue.js
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 #Vue.js
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 #Vue.js
vue表单验证之禁止input输入框输入空格
Dec 03 #Vue.js
对vue生命周期的深入理解
Dec 03 #Vue.js
You might like
PHP默认安装产生系统漏洞
2006/10/09 PHP
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
javascript &&和||运算法的另类使用技巧
2009/11/28 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
javascript实现微信分享
2014/12/23 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
老生常谈combobox和combotree模糊查询
2017/04/17 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
vuejs 动态添加input框的实例讲解
2018/08/24 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
Python模拟三级菜单效果
2017/09/11 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
Django 1.10以上版本 url 配置注意事项详解
2019/08/05 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
企业项目策划书
2014/01/11 职场文书
全陪导游欢迎词
2014/01/17 职场文书
料理师求职信
2014/01/30 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
参加招聘会后的感想
2015/08/10 职场文书
Python使用Kubernetes API访问集群
2021/05/30 Python