解决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 25 Vue.js
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
Vue如何实现验证码输入交互
Dec 07 Vue.js
学习 Vue.js 遇到的那些坑
Feb 02 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
如何在 Vue 中使用 JSX
Feb 14 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
Aug 05 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php防止网站被攻击的应急代码
2015/10/21 PHP
php轻松实现文件上传功能
2016/03/03 PHP
PHP引用返回用法示例
2016/05/28 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
微信小程序 setData使用方法及常用错误解决办法
2017/05/11 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
python文件和目录操作方法大全(含实例)
2014/03/12 Python
python实现的简单抽奖系统实例
2015/05/22 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
python实现单机五子棋
2020/08/28 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
企业内部培训方案
2014/02/04 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
2015年入党决心书
2015/02/05 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL