關(guān)于JavaScript的URL.createObjectURL()的使用方法
URL.createObjectURL() 靜態(tài)方法會創(chuàng)建一個 DOMString,其中包含一個表示參數(shù)中給出的對象的URL。這個 URL 的生命周期和創(chuàng)建它的窗口中的 document 綁定。這個新的URL 對象表示指定的 File 對象或 Blob 對象。
URL.createObjectURL(blob)和FileReader.readAsDataURL(file)很相似,下面是個人的一些理解,如有不正確的地方,歡迎指出:
主要區(qū)別
- 通過FileReader.readAsDataURL(file)可以獲取一段data:base64的字符串
- 通過URL.createObjectURL(blob)可以獲取當(dāng)前文件的一個內(nèi)存URL
執(zhí)行時機:
- 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)存中清除(通過垃圾回收機制)
兼容性方面兩個屬性都兼容ie10以上的瀏覽器。
優(yōu)劣對比:
- 使用createObjectURL可以節(jié)省性能并更快速,只不過需要在不使用的情況下手動釋放內(nèi)存
- 如果不太在意設(shè)備性能問題,并想獲取圖片的base64,則推薦使用FileReader.readAsDataURL
使用方式:
objectURL = URL.createObjectURL(blob);
示例
html 文件
<input type="file" id="btn" accept="image/*" value="點擊上傳" /> <img id="img"/>
js 文件
btn.addEventListener('change',function(){ let file = this.files[0]; // 進一步防止文件類型錯誤 if(!/image\/\w+/.test(file.type)){ alert("看清楚,這個需要圖片!"); return false; } img.src = URL.createObjectURL(file) })
到此這篇關(guān)于關(guān)于URL.createObjectURL()的使用方法的文章就介紹到這了,更多相關(guān)URL.createObjectURL()用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JS中創(chuàng)建函數(shù)的三種方式及區(qū)別
這篇文章主要介紹了js函數(shù)的多種定義方法與其區(qū)別,非常的詳細(xì),有需要的小伙伴可以參考下2016-03-03javascript學(xué)習(xí)筆記(三)顯示當(dāng)時時間的代碼
主要是為了熟悉javascript中在date對象,大家可以看下。2011-04-04appendChild() 或 insertBefore()使用與區(qū)別介紹
appendChild() 方法在節(jié)點的子節(jié)點列表末添加新的子節(jié)點。insertBefore() 方法在節(jié)點的子節(jié)點列表任意位置插入新的節(jié)點,下面為大家介紹下具體的使用,感興趣的朋友不要錯過2013-10-10