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下载后台的乱码流如何解决