admin管理员组

文章数量:1558087

通过Blob对象处理返回内容

先设置responseType为blob,对象随后对返回的数据进行Blob处理,再创建a标签模拟点击下载。

值得注意的是,如果你的项目中使用了mock数据,那么会覆盖你的responseType的设置为默认的json,使得下载文件内容乱码。因此,你需要密切关注返回的数据是个Blob对象还是Json格式
具体代码如下

axios({
              method:'post',
              url:'',
              responseType: "blob",   // 该项必填
              data:{}
            }).then(res=>{         
              const blob = new Blob([res.data], {
          	    type:
                "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"
            });
            const downloadElement = document.createElement("a");
            const href = window.URL.createObjectURL(blob);
            // 如果后端没有提供文件名不用管下面注释的代码
            // let contentDisposition = res.headers["content-disposition"]; //从response的headers中获取filename, 后端response.setHeader(&#

本文标签: 乱码浏览器方式文件axios