有时从后端请求获取到的图片为二进制的流文件,需要展示在页面中,可以将二进制转换为base64即可。这里是在vue项目用的axios请求。
这里就是后端返回的流,看着跟乱码一样
直接上代码

      deviceDoDownload().then(d => {
        console.log(d);
        if (d.data) {//如果返回的有值,则使用返回的底图
          // 先将二进制的流转为blob,注意后面type一定要设置为图片格式
          let blob = new Blob([d.data], { type: "image/jpg" });
          var Fr = new FileReader();
          Fr.readAsDataURL(blob);
          Fr.onload = (event) => {
          //这个就是转换为的base64图片地址
            this.staticMap = event.target.result;
          };
        }
      })

当然这样写最后转的base64是有问题的,在页面中显示不出来,还需要在请求接口中添加responseType表明数据类型

export const deviceDoDownload = () => {
    return axios({
        url: '/aaaaaa',
        method: 'post',
        responseType: "blob" // 表明返回服务器返回的数据类型
    })
}

然后在看后端接口返回的数据
现在返回的数据就成了Blob格式的了,这样就可以
就是这样

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐