解决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实现表格合并功能
Dec 01 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
Vue Element plus使用方法梳理
Dec 24 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
杏林同学录(一)
2006/10/09 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP的引用详解
2015/02/22 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
jQuery中removeData()方法用法实例
2014/12/27 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
vue组件学习教程
2017/09/09 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
python进阶教程之模块(module)介绍
2014/08/30 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
深入浅析Python中的yield关键字
2018/01/24 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
Python实现汇率转换操作
2020/05/03 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
涉外文秘个人求职的自我评价
2013/10/07 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
老人与海读书笔记
2015/06/26 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书