TypeError: Failed to execute ‘createObjectURL‘ on ‘URL‘: Overload resolution failed

28,748次阅读
没有评论

共计 1344 个字符,预计需要花费 4 分钟才能阅读完成。


service.interceptors.response.use(
  (response) => {
    const res = response.data
    
    
    if (!res.code) {
      return response
    }
    ...
  },
  (error) => {
  	...
  }
export function downloadQrcode(params) {
  return request({
    url: '/multiplayer-draw/download-qrcode',
    method: 'get',
    
    responseType: 'blob',		
    params
  })
}
downloadQrcode({id: this.id}).then(res => {
  console.log(res,'res'); 
  var a = document.createElement('a')
  document.body.appendChild(a)
  a.style = 'display: none'
  let url = window.URL.createObjectURL(res); 
  a.href =  url
  a.download = '二维码.png'
  a.click()
  a.remove()
  window.URL.revokeObjectURL(url) 
})

发现报错:
TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed
同时,发现接口是有返回值的:
TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed

再看打印的 res:
TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed 发现打印的 res 并不是最后我们需要的 Blob 值,我们需要的是 Blob 类型的值,发现正是 res.data(但是从浏览器控制台并不能看出 data),所以应该修改 request.js 为:

const res = response.data

 
 if (!res.code) {
   return response.data 
 }

此时发现打印的 res 为:
TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed
也没有“TypeError: Failed to execute‘createObjectURL’on‘URL’: Overload resolution failed”这个报错了,成功下载了图片。

还有第二种方法:创建一个 Blob

downloadQrcode({id: this.id}).then(res => {
   console.log(res,'res');
   var a = document.createElement('a')
   document.body.appendChild(a)
   a.style = 'display: none'
   
   let blob = new Blob([res], {
     type: "image/png",
   }); 
   let url = window.URL.createObjectURL(blob); 
   a.href =  url
   a.download = '二维码'
   a.click()
   a.remove()
   window.URL.revokeObjectURL(url) 
 })

发现打印的 res 没变
TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed
但是也没有出现“TypeError: Failed to execute‘createObjectURL’on‘URL’: Overload resolution failed”报错,而且 a.download = ‘ 二维码.png’变成了 a.download =‘二维码’,也成功下载了图片。

原文地址: TypeError: Failed to execute‘createObjectURL‘on‘URL‘: Overload resolution failed

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-06发表,共计1344字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)