欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中URL.createObjectURL使用示例講解

 更新時間:2022年03月05日 11:14:35   作者:定栓  
URL.createObjectURL()方法會根據(jù)傳入的參數(shù)創(chuàng)建一個指向該參數(shù)對象的URL. 這個URL的生命僅存在于它被創(chuàng)建的這個文檔里. 新的對象URL指向執(zhí)行的File對象或者是Blob對象,這篇文章主要給大家介紹了關(guān)于JS中URL.createObjectURL使用的相關(guān)資料,需要的朋友可以參考下

前言

URL.createObjectURL() 靜態(tài)方法會創(chuàng)建一個 DOMString,其中包含一個表示參數(shù)中給出的對象的URL。這個 URL 的生命周期和創(chuàng)建它的窗口中的 document 綁定。這個新的URL 對象表示指定的 File 對象或 Blob 對象。

URL.createObjectURL()

語法

objectURL = URL.createObjectURL(object);

參數(shù)

用于創(chuàng)建 URL 的 File 對象、Blob 對象或者 MediaSource 對象。?

返回值

一個DOMString包含了一個對象URL,該URL可用于指定源 object的內(nèi)容。

示例

// html代碼
<input type="file" id="file">

// js代碼
document.querySelector('#file').onchange = function (e) {
  console.log(e.target.files[0])
  console.log(URL.createObjectURL(e.target.files[0]))
}

將上方console控制臺打印的blob文件資源地址粘貼到瀏覽器中

blob:http://localhost:8080/1ece2bb1-b426-4261-89e8-c3bec43a4020

URL.revokeObjectURL()

在每次調(diào)用 createObjectURL() 方法時,都會創(chuàng)建一個新的 URL 對象,即使你已經(jīng)用相同的對象作為參數(shù)創(chuàng)建過。當(dāng)不再需要這些 URL 對象時,每個對象必須通過調(diào)用 URL.revokeObjectURL() 方法來釋放。

瀏覽器在 document 卸載的時候,會自動釋放它們,但是為了獲得最佳性能和內(nèi)存使用狀況,你應(yīng)該在安全的時機(jī)主動釋放掉它們。

語法

window.URL.revokeObjectURL(objectURL);

參數(shù) objectURL

一個 DOMString,表示通過調(diào)用 URL.createObjectURL() 方法返回的 URL 對象。

Return value

undefined

示例

// html代碼
<input type="file" id="file">
<img id="img1" style="width: 200px;height: auto" />
<img id="img2" style="width: 200px;height: auto" />

// js代碼
document.querySelector('#file').onchange = function (e) {
	const file = e.target.files[0]
	
	const URL1 = URL.createObjectURL(file)
	console.log(URL1)
	document.querySelector('#img1').src = URL1
	URL.revokeObjectURL(URL1)
	
	const URL2 = URL.createObjectURL(file)
	console.log(URL2)
	document.querySelector('#img2').src = URL2
}

與FileReader.readAsDataURL(file)區(qū)別

若對FileReader不了解,則可以翻看這篇文章

主要區(qū)別

  • 通過FileReader.readAsDataURL(file)可以獲取一段data:base64的字符串
  • 通過URL.createObjectURL(blob)可以獲取當(dāng)前文件的一個內(nèi)存URL

執(zhí)行時機(jī)

  • createObjectURL是同步執(zhí)行(立即的)
  • FileReader.readAsDataURL是異步執(zhí)行(過一段時間)

內(nèi)存使用

  • createObjectURL返回一段帶hash的url,并且一直存儲在內(nèi)存中,直到document觸發(fā)了unload事件(例如:document close)或者執(zhí)行revokeObjectURL來釋放。
  • FileReader.readAsDataURL則返回包含很多字符的base64,并會比blob url消耗更多內(nèi)存,但是在不用的時候會自動從內(nèi)存中清除(通過垃圾回收機(jī)制)

優(yōu)劣對比

  • 使用createObjectURL可以節(jié)省性能并更快速,只不過需要在不使用的情況下手動釋放內(nèi)存
  • 如果不太在意設(shè)備性能問題,并想獲取圖片的base64,則推薦使用FileReader.readAsDataURL

總結(jié)

到此這篇關(guān)于JS中URL.createObjectURL使用的文章就介紹到這了,更多相關(guān)JS URL.createObjectURL講解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論