接口返回的是一个图片文件而不是url 前端如何显示?
请求后端接口 返回的时一张图片 如何在img中显示?
preview里查看就是显示一张图片
console.log(img):
.]
用blob createObjectURL转换成地址后前端img还是访问不到的效果
结果
代码
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果是资源链接,直接用
img
标签如果是
blob
格式的数据,可以用URL.createObjectURL()
创建一个临时的url
,然后再用img
标签,使用过后不要忘记URL.revokeObjectURL()
如果不想用
img
标签,还可以用canvas
的drawImage()
或者getImageData()
来渲染图片,也可以达到预览的效果获取还可以直接接口的 uri 写到
img
标签中,会自动发一个get
类型的请求出去的,如果返回的资源格式是图片,也可以显示<img src="接口地址"/>
1:
2:
如果你的接口文档中写明响应类型为: IMAGE,那么你直接可以当做图片路径直接给img的src
我也遇到了同样的问题,是设置了responseType: 'blob',直接const myBlob = new window.Blob([res.data], {type: 'image/jpeg'}),就能拿到图片url吗