axios接收后台传的图片流数据

368 阅读1分钟

问题场景:

后台响应的直接是一个图片

需要注意的几点是:
  • 对axios进行了二次封装的情况下面你应该对code==undefined的情况做单另的处理,因为很多情况下面我们封装的时候不是200会提示后台的错误
  • 后台的传的图片是流的形式不是简单的图片的
  • axios不是创建实例的方式(axios.create())进行的二次封装是会影响全局的,所以我们再这里import axios from "axios" 也是进过二次封装过的

解决方案:

*****tempalte里面*****

******methods:******
getImgCode() {
      (this.uuid = new Date().getTime()),
        axios({
          url: this.GLOBAL.BASE_URL + "/common/yzm",
          method: "post",
          responseType: "blob",  //画重点
          data: this.$qs.stringify({
            uuid: this.uuid,
          }),
        }).then((res) => {
              //得到的res.data就是Blob对象
              this.imageUrl = window.URL.createObjectURL(res.data);  //画重点
        });
},

盲区:

1.responseType值的类型可为如下
   responseType:blob是用来请求文件流的,我们一般采用的是默认的text请求的是json数据
2.objectURL = URL.createObjectURL(object); 作用是用来创建url的
  参数object是用于创建 URL 的 [File](https://developer.mozilla.org/zh-CN/docs/Web/API/File) 对象、[Blob](https://developer.mozilla.org/zh-CN/docs/Web/API/Blob) 对象或者 [MediaSource](https://developer.mozilla.org/zh-CN/docs/Web/API/MediaSource) 对象。

此篇文章仅为个人遇到的实际问题的总结。