解决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下拉刷新组件的开发及slot的使用详解
Dec 23 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue选项卡切换的实现案例
Apr 11 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 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实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
javascript 基础篇2 数据类型,语句,函数
2012/03/14 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
浅谈JS原型对象和原型链
2016/03/02 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
2018/12/24 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
小程序外卖订单界面的示例代码
2019/12/30 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python实现模拟分割大文件及多线程处理的方法
2017/10/10 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
Python 监测文件是否更新的方法
2019/06/10 Python
django实现web接口 python3模拟Post请求方式
2019/11/19 Python
python3让print输出不换行的方法
2020/08/24 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
岗位廉洁从政承诺书
2014/03/27 职场文书
考核评语大全
2014/04/29 职场文书
违章停车检讨书
2014/10/21 职场文书
李强为自己工作观后感
2015/06/11 职场文书
pandas:get_dummies()与pd.factorize()的用法及区别说明
2021/05/21 Python