解决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-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
浅析VUE防抖与节流
Nov 24 Vue.js
对vue生命周期的深入理解
Dec 03 Vue.js
如何正确解决VuePress本地访问出现资源报错404的问题
Dec 03 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
vue组件的路由高亮问题解决方法
May 11 Vue.js
Vue.js中v-bind指令的用法介绍
Mar 13 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 Vue.js
Vue OpenLayer测距功能的实现
Apr 20 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中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
javascript 函数使用说明
2010/04/07 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
jQuery中Chosen三级联动功能实例代码
2017/03/07 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
JS Array.from()将伪数组转换成数组的方法示例
2020/03/23 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
Python随机生成手机号、数字的方法详解
2017/07/21 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python try except else使用详解
2021/01/12 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
幼儿教师国培感言
2014/02/19 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
初中作文评语大全
2014/04/23 职场文书
安全保证书范文
2014/04/29 职场文书
英语系毕业生求职信
2014/07/13 职场文书
出租车拒载检讨书
2015/01/28 职场文书
消防演习通知
2015/04/25 职场文书
应急管理工作总结2015
2015/05/04 职场文书
Redis 哨兵机制及配置实现
2022/03/25 Redis