前端处理后台传过来的二进制流进行下载,并处理乱码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34733308/article/details/84135648

附上代码及注释

        //注意请求的时候要加上{responseType:'blob'}参数
this.$axios.post("/api/xxx/xxx/xxx",this.$qs.stringify({range:0,}),{responseType:'blob'}).then(msg=>{
                console.log(msg.data) //打印出来是blob对象,已经不是乱码了
                let url = window.URL.createObjectURL(msg.data); //表示一个指定的file对象或Blob对象
                console.log(url,"看一下这是啥")
                let a = document.createElement("a"); 
                document.body.appendChild(a);
                let fileName=msg.headers["content-disposition"].split(";")[1].split("=")[1];  //filename名称截取
                a.href = url;
                a.download = fileName; //命名下载名称
                a.click(); //点击触发下载  
                window.URL.revokeObjectURL(url);  //下载完成进行释放
        })

特别注意:

在和后台交互的时候,如果后台返回给我们的是二进制流数据,我们就要在发送的时候加上{responseType:'blob'}这行代码,这样返回给我们的就不是乱码了。

展开阅读全文

没有更多推荐了,返回首页