vue下载后台的乱码流如何解决

  

vue下载后台的乱码流如何解决?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>解决办法:

请求方式用的是axios,主要加关键的{responseType: & # 39;团# 39;}

<强> axios封装

导出功能postDownload (url,数据){
  返回新的承诺((解决,拒绝)=比;{
  实例。帖子(url、数据{responseType: & # 39;团# 39;})。(反应=比;{
  解决(响应);
  },呃=比;{
  拒绝(err)
  })
  })
  }

下载插件npm安装js-file-download - s

<强>运用:

下载excel时,后台设置了excel标题,要去请求头去取,传输过程中文会有乱码的情况,需要编码下。

让fileDownload=要求(“js-file-download");

fileDownload (res.data, decodeURIComponent (res.headers[& # 39;附加# 39;].split (“=? [1]));

<强> vue下载后台接口返回的二进制流文件转为excel文件

我就废话不多说了,大家还是直接看代码吧~

http({美元。   方法:“post",   responseType:“arraybuffer"   url: & # 39;导出接口地址& # 39;,   数据:{}   })((res)=祝辞{   如果(res.status===200,,res.data) {   var性格=res.headers[& # 39;附加# 39;];   var=decodeURI文件名(disposition.split(“文件名”=?[1].split(“;文件名*=?[0])   让blob=new blob ([res。数据),{类型:& # 39;应用程序/xls # 39;});//xls是我和后台约定好的文件格式   让链接=document.createElement(& # 39;一个# 39;);   链接。href=https://www.yisu.com/zixun/window.URL.createObjectURL (blob);   链接。下载=文件名;   link.click ();   link.remove ();      }   },(err)=> {var enc=new TextDecoder (“utf - 8”)   var res=JSON.parse (enc.decode(新Uint8Array (err.data)))//转化成json对象      });

此时注意responseType:“arraybuffer",在vue框架当中,数据请求是借助axios的,为此,在发送请求的时候,需要修改responseType,改为arraybuffer, axios默认情况下responseType为json,若是不修改,很可能下载时候会是乱码,或者为null。

看完上述内容,你们掌握vue下载后台的乱码流如何解决的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

vue下载后台的乱码流如何解决