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

 更新时间:2020年12月05日 09:12:46   作者:丹东来了  
这篇文章主要介绍了解决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下载后台传过来的乱码流的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决vue2中使用elementUi打包报错的问题

    解决vue2中使用elementUi打包报错的问题

    这篇文章主要介绍了解决vue2中使用elementUi打包报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue封装可复用组件confirm,并绑定在vue原型上的示例

    vue封装可复用组件confirm,并绑定在vue原型上的示例

    今天小编就为大家分享一篇vue封装可复用组件confirm,并绑定在vue原型上的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • vue iview的菜单组件Mune 点击不高亮的解决方案

    vue iview的菜单组件Mune 点击不高亮的解决方案

    今天小编就为大家分享一篇vue iview的菜单组件Mune 点击不高亮的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue中bus的使用及踩坑解决

    vue中bus的使用及踩坑解决

    这篇文章主要为大家详细介绍了vue中bus的相关使用以及涉及到的问题与解决,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-08-08
  • vite+ts vite.config.ts使用path报错问题及解决

    vite+ts vite.config.ts使用path报错问题及解决

    这篇文章主要介绍了vite+ts vite.config.ts使用path报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Vue中使用Scss实现配置、切换主题方式

    Vue中使用Scss实现配置、切换主题方式

    这篇文章主要介绍了Vue中使用Scss实现配置、切换主题方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 一文详解Vue3中如何使用Vue Router

    一文详解Vue3中如何使用Vue Router

    Vue-Router路由是根据不同的url地址展现不同的内容或页面,这篇文章主要给大家介绍了关于Vue3中如何使用Vue Router的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • vue-element-admin后台生成动态路由及菜单方法详解

    vue-element-admin后台生成动态路由及菜单方法详解

    vue-element-admin后台管理系统模板框架 是vue结合element-ui一体的管理系统框架,下面这篇文章主要给大家介绍了关于vue-element-admin后台生成动态路由及菜单的相关资料,需要的朋友可以参考下
    2023-09-09
  • 详解用vue-cli来搭建vue项目和webpack

    详解用vue-cli来搭建vue项目和webpack

    本篇文章主要介绍了详解用vue-cli来搭建vue项目和webpack,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Vue3的效率提升主要表现在哪些方面示例解析

    Vue3的效率提升主要表现在哪些方面示例解析

    Vue3带来了许多性能优化和效率提升的特性,本文将重点讨论Vue3在静态提升、预字符串化、缓存事件处理函数、Block Tree和PatchFlag方面的改进,我们将通过对比Vue2和Vue3的编译结果来说明这些方面的效率提升
    2023-12-12

最新评论