接口返回的是一个图片文件而不是url 前端如何显示?

发布于 2022-09-11 15:05:36 字数 1463 浏览 22 评论 0

请求后端接口 返回的时一张图片 如何在img中显示?

preview里查看就是显示一张图片
clipboard.png

console.log(img):
clipboard.png
.]

用blob createObjectURL转换成地址后前端img还是访问不到的效果
结果
clipboard.png

代码

 this._http.doGet(this, 'createQRCode', {id: this.lessonId}, (res) => {
        var img = document.createElement('img')
        const myBlob = new window.Blob([res.data], {type: 'image/jpeg'})
        console.log(myBlob)
        const qrUrl = window.URL.createObjectURL(myBlob)
        img.src = qrUrl
        img.onload = function () {
          window.URL.revokeObjectURL(qrUrl)
        }
        const imgDiv = document.querySelector('.qr-div')
        imgDiv.appendChild(img)
      })

首先需要设置axios responseType: 'blob'
然后直接createObjectURL即可

    const qrUrl = window.URL.createObjectURL(res.data)
    var img = document.createElement('img')
    img.src = qrUrl
    img.onload = function () {
      window.URL.revokeObjectURL(qrUrl)
    }
    const imgDiv = document.querySelector('.qr-div')
    imgDiv.appendChild(img)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

薄荷梦 2022-09-18 15:05:36

如果是资源链接,直接用 img 标签
如果是 blob 格式的数据,可以用 URL.createObjectURL() 创建一个临时的 url ,然后再用 img 标签,使用过后不要忘记 URL.revokeObjectURL()

如果不想用 img 标签,还可以用 canvasdrawImage() 或者 getImageData() 来渲染图片,也可以达到预览的效果

获取还可以直接接口的 uri 写到 img 标签中,会自动发一个 get 类型的请求出去的,如果返回的资源格式是图片,也可以显示

还给你自由 2022-09-18 15:05:36

<img src="接口地址"/>

魔法唧唧 2022-09-18 15:05:36

1:

axios.get(url, { params, `responseType: 'arraybuffer'`}).then(({ data }) => {
    let u8a = new Uint8Array(data).reduce((data, byte) => data + String.fromCharCode(byte), '');
    let src = `data:image/png;base64, ${ btoa(u8a) }`;
    console.log(src);
});

2:
如果你的接口文档中写明响应类型为: IMAGE,那么你直接可以当做图片路径直接给img的src

<img src="接口地址" />
戏舞 2022-09-18 15:05:36

我也遇到了同样的问题,是设置了responseType: 'blob',直接const myBlob = new window.Blob([res.data], {type: 'image/jpeg'}),就能拿到图片url吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文