URL.createObjectURl () 与URL.revokeObjectURL解析

— URL .createObejectURL方法
URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL。这个URL的生命仅存在于在被创建的这个文档里,新的对象URL指向执行的File对象或者是Blob对象。

// 语法
//newObjectUrl = URL.createObjectURL(blob || file)
// 例子
 let img = document.createElement('img')
 window.URL.revokeObjectURL(img.src)
 

需要注意的点
每次调用createObjectURL的时候,一个新的URL对象就被创建了。即使你已经为同一个文件创建过一个URL。如果你不再需要用得到它的时候,就需要释放它。

URL.revokeObjectURL
URL.revokeObjectURL()方法会释放URL .createObejectURL创建的对象URL,当你已经用过了这个对象URL,然后要让浏览器知道这个URK已经不再需要指向对应的文件的时候,就需要调用这个方法。也就是说一个对象URL,使用这个url是可以访问到指定的文件的,但是我可能只需要访问一次,一旦已经访问到了,这个对象URL就不再需要了,就需要被释放掉,被释放掉后,这个对象URL就不再指向指定的文件了。

如果出现 Failed to execute ‘createObjectURL‘ on ‘URL‘: Overload resolution failed.
我原来的写法:

let url = null
url = window.webkitURL.createObjectURL(file)

Chrome更新后不支持这种用法,需要改为:
Blob对象

  let url = null
  const binaryData = [];
  binaryData.push(blob);
  url = window.URL.createObjectURL(new Blob(binaryData,{type:'application/pdf;chartset=UTF-8'}));


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
window.URL.createObjectURL()方法是一种用于创建URL对象的方法。它接受一个参数,该参数可以是一个Blob对象或者一个File对象,然后返回一个URL字符串,该字符串可以用于引用该对象。 具体来说,使用该方法可以将Blob对象或者File对象转换为URL字符串,从而可以将其用作链接或者预览文件等操作。该方法创建的URL对象在浏览器内部维护,因此当不再需要该URL对象时,应该使用window.URL.revokeObjectURL()方法将其释放,以避免内存泄漏。 下面是使用window.URL.createObjectURL()方法创建URL对象的示例代码: ``` var blob = new Blob(["Hello, World!"], { type: "text/plain" }); var url = window.URL.createObjectURL(blob); console.log(url); // 输出blob:http://localhost:8080/xxxx-xxxx-xxxx-xxxx ``` 在上面的示例代码中,我们首先创建了一个Blob对象,该对象包含了一个字符串“Hello, World!”,并且指定了其MIME类型为“text/plain”。然后,我们调用window.URL.createObjectURL()方法将该Blob对象转换为一个URL字符串,并将其存储在变量url中。最后,我们输出该URL字符串。 需要注意的是,使用window.URL.createObjectURL()方法创建的URL对象仅在当前浏览器会话中有效。如果用户关闭了浏览器窗口或者标签页,该URL对象将失效。因此,如果需要在多个页面之间共享URL对象,应该使用其他方法,比如将其存储在服务器上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值