關(guān)于JavaScript的URL.createObjectURL()的使用方法
URL.createObjectURL() 靜態(tài)方法會(huì)創(chuàng)建一個(gè) DOMString,其中包含一個(gè)表示參數(shù)中給出的對(duì)象的URL。這個(gè) URL 的生命周期和創(chuàng)建它的窗口中的 document 綁定。這個(gè)新的URL 對(duì)象表示指定的 File 對(duì)象或 Blob 對(duì)象。
URL.createObjectURL(blob)和FileReader.readAsDataURL(file)很相似,下面是個(gè)人的一些理解,如有不正確的地方,歡迎指出:
主要區(qū)別
- 通過(guò)FileReader.readAsDataURL(file)可以獲取一段data:base64的字符串
- 通過(guò)URL.createObjectURL(blob)可以獲取當(dāng)前文件的一個(gè)內(nèi)存URL
執(zhí)行時(shí)機(jī):
- createObjectURL是同步執(zhí)行(立即的)
- FileReader.readAsDataURL是異步執(zhí)行(過(guò)一段時(shí)間)
內(nèi)存使用:
- createObjectURL返回一段帶hash的url,并且一直存儲(chǔ)在內(nèi)存中,直到document觸發(fā)了unload事件(例如:document close)或者執(zhí)行revokeObjectURL來(lái)釋放。
- FileReader.readAsDataURL則返回包含很多字符的base64,并會(huì)比blob url消耗更多內(nèi)存,但是在不用的時(shí)候會(huì)自動(dòng)從內(nèi)存中清除(通過(guò)垃圾回收機(jī)制)
兼容性方面兩個(gè)屬性都兼容ie10以上的瀏覽器。
優(yōu)劣對(duì)比:
- 使用createObjectURL可以節(jié)省性能并更快速,只不過(guò)需要在不使用的情況下手動(dòng)釋放內(nèi)存
- 如果不太在意設(shè)備性能問(wèn)題,并想獲取圖片的base64,則推薦使用FileReader.readAsDataURL
使用方式:
objectURL = URL.createObjectURL(blob);
示例
html 文件
<input type="file" id="btn" accept="image/*" value="點(diǎn)擊上傳" /> <img id="img"/>
js 文件
btn.addEventListener('change',function(){
let file = this.files[0];
// 進(jìn)一步防止文件類(lèi)型錯(cuò)誤
if(!/image\/\w+/.test(file.type)){
alert("看清楚,這個(gè)需要圖片!");
return false;
}
img.src = URL.createObjectURL(file)
})
到此這篇關(guān)于關(guān)于URL.createObjectURL()的使用方法的文章就介紹到這了,更多相關(guān)URL.createObjectURL()用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解JavaScript中數(shù)組和字符串的lastIndexOf()方法使用
這篇文章主要介紹了詳解JavaScript中數(shù)組和字符串的lastIndexOf()方法使用,文中特別提及了IE8的兼容問(wèn)題以及for in的使用問(wèn)題,需要的朋友可以參考下2016-03-03
在JavaScript應(yīng)用中實(shí)現(xiàn)延遲加載的方法
這篇文章主要介紹了在JavaScript應(yīng)用中實(shí)現(xiàn)延遲加載的方法,利用RequireJS框架,需要的朋友可以參考下2015-06-06
JavaScript字符串對(duì)象的concat方法實(shí)例(用于連接兩個(gè)或多個(gè)字符串)
這篇文章主要介紹了JavaScript字符串對(duì)象的concat方法實(shí)例,這個(gè)方法用于連接兩個(gè)或多個(gè)字符串,平時(shí)用+號(hào)比較多,所以這個(gè)方法可能不太常用,需要的朋友可以參考下2014-10-10
淺談JavaScript的內(nèi)置對(duì)象和瀏覽器對(duì)象
下面小編就為大家?guī)?lái)一篇淺談JavaScript的內(nèi)置對(duì)象和瀏覽器對(duì)象。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06
JavaScript排序算法之希爾排序的2個(gè)實(shí)例
希爾排序,也稱(chēng)遞減增量排序算法,是插入排序的一種高速而穩(wěn)定的改進(jìn)版本。希爾排序是基于插入排序的以下兩點(diǎn)性質(zhì)而提出改進(jìn)方法的2014-04-04
JavaScript中CreateTextFile函數(shù)
JavaScript中CreateTextFile函數(shù)是創(chuàng)建指定的文件名并返回一個(gè) TextStream 對(duì)象,可以使用這個(gè)對(duì)象對(duì)文件進(jìn)行讀寫(xiě)2020-08-08
javascript 秒表計(jì)時(shí)器實(shí)現(xiàn)代碼
這篇文章主要介紹了javascript 秒表計(jì)時(shí)器實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-03-03
JavaScript中用sort()方法對(duì)數(shù)組元素進(jìn)行排序的操作
這篇文章主要介紹了JavaScript中用sort()方法對(duì)數(shù)組元素進(jìn)行排序的操作,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06

