You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在前端img标签中展示Express服务端流式返回的图片

解决方案

优先推荐方案:直接使用接口地址作为img src属性值

你的服务端代码逻辑完全正确,已经正确设置了Content-Type: image/jpg响应头,返回的是标准JPG格式的二进制图片流,浏览器原生支持直接将这类返回图片的接口地址填入img标签的src属性,不需要做任何额外的数据处理:

<img src="/image" alt="展示图片">

这个方案性能最高,没有转码损耗,适配所有主流浏览器。

备选方案:前端手动请求后渲染(适用于需要带自定义请求头鉴权的场景)

如果你的接口需要携带token等自定义请求头,无法直接通过src属性访问,可以按以下方式处理:

fetch请求示例

fetch('/image')
  .then(res => res.blob())
  .then(blob => {
    const fileReader = new FileReader()
    fileReader.onload = () => {
      document.querySelector('img').src = fileReader.result
    }
    fileReader.readAsDataURL(blob)
  })

axios请求示例

需要额外指定响应类型为blob,避免axios默认按文本解析返回内容导致乱码:

axios.get('/image', {
  responseType: 'blob'
}).then(res => {
  const imgSrc = URL.createObjectURL(res.data)
  document.querySelector('img').src = imgSrc
  // 图片销毁/页面卸载时手动释放内存,避免内存泄漏
  // URL.revokeObjectURL(imgSrc)
})

之前操作失败的原因

你尝试base64、blob方案失败,核心原因是没有指定请求的响应类型为二进制格式,请求库默认按UTF-8文本解析图片二进制流,得到的就是你打印出来的乱码内容,无法正常转码为可识别的图片资源。

内容的提问来源于stack exchange,提问作者Thomas Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:06:02