如何在前端显示后端返回的图片流(以Vue为例)

本文档介绍如何在前端处理后端返回的图片流数据。当后台接口返回图片流而不是普通URL时,需要使用window.URL.createObjectURL()方法来创建可显示的图片源。在请求图片时,需指定responseType为'blob'。通过遍历数据并异步处理每个图片流,可以成功将图片展示在轮播组件中。
摘要由CSDN通过智能技术生成

我们在前端显示图片一般用法是这样的

<template>
  <el-carousel :interval="4000" type="card" height="310px" :autoplay="true">
    <el-carousel-item v-for="item in dataList" :key="item.url" @click.native="jump(item)">
      <img :src="item.dataSrc" alt="暂无图片" style="cursor: pointer">
      <div class="tip">提供文件调查功能</div>
    </el-carousel-item>
  </el-carousel>
</template>

如果是一般的地址,是没有问题的,但是如果后台返回的是个流的话,上面的写法就gg了。

如果流的话,我们需要如下设置将后端返回的流用window.URL.createObjectURL()处理一下。

async init() {
      try {
        const { data } = await _getOnlineCarouselList()
        data.forEach(async(item) => {
          const fileId = item.fileId
            // 返回的是图片流
          const result = await _getOnlineCarouselPicture({ fileId })
          this.$set(item, 'dataSrc', window.URL.createObjectURL(result))
        })
        this.carousel = data
        console.log(this.carousel)
      } catch (error) {
        console.log(error)
      }
    }

在访问后台调用接口的时候添加 responseType: 'blob'属性

export const _getOnlineCarouselPicture = (params) => {
  return request.get(`/common/file/showImg?` + new Date().getTime(), {
    params,
    responseType: 'blob'
  })
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值