使用HTML5 IndexDB存儲(chǔ)圖像和文件
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
使用IndexedDB存儲(chǔ)圖像和文件有一天,我們寫(xiě)了關(guān)于如何在localStorage中保存圖像和文件的文章,它是關(guān)于我們今天可用的實(shí)用主義。 然而,localStorage有一些性能影響 - 我們將在稍后的博客中討論這個(gè)問(wèn)題 - 并且未來(lái)期望的方法是使用IndexedDB。 在這里,我將向您介紹如何在IndexedDB中存儲(chǔ)圖像和文件,然后通過(guò)ObjectURL呈現(xiàn)它們。 本文是翻譯過(guò)來(lái)的,原文在這里Storing images and files in IndexedDB 關(guān)于作者: Robert Nyman [Editor emeritus] Technical Evangelist & Editor of Mozilla Hacks. Gives talks & blogs about HTML5, JavaScript & the Open Web. Robert is a strong believer in HTML5 and the Open Web and has been working since 1999 with Front End development for the web - in Sweden and in New York City. He regularly also blogs at robertnyman.com and loves to travel and meet people. 使用IndexedDB存儲(chǔ)圖像和文件的常規(guī)步驟首先,我們來(lái)談?wù)勎覀儗?chuàng)建一個(gè)IndexedDB數(shù)據(jù)庫(kù),將文件保存到其中然后將其讀出并顯示在頁(yè)面中的步驟: 1、創(chuàng)建或打開(kāi)數(shù)據(jù)庫(kù) 2、創(chuàng)建一個(gè)objectStore 3、將圖像文件檢索為blob 4、初始化一個(gè)數(shù)據(jù)庫(kù)事物 5、保存圖像blob到數(shù)據(jù)庫(kù)中去 6、讀出保存的文件并從中創(chuàng)建ObjectURL并將其設(shè)置為頁(yè)面中圖像元素的src 1、創(chuàng)建或打開(kāi)數(shù)據(jù)庫(kù)。
使用它的預(yù)期方法是在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)觸發(fā)onupgradeneeded事件或獲取更高版本號(hào)。 目前僅在Firefox中支持此功能,但很快將在其他Web瀏覽器中支持。 如果Web瀏覽器不支持此事件,則可以使用已棄用的setVersion方法并連接到其onsuccess事件。 2、創(chuàng)建一個(gè)objectStore(如果它尚不存在)
在這里,您創(chuàng)建一個(gè)ObjectStore,您將存儲(chǔ)數(shù)據(jù) - 或者在我們的例子中,文件 - 并且一旦創(chuàng)建,您不需要重新創(chuàng)建它,只需更新其內(nèi)容即可。 3、將圖像文件檢索為blob
此代碼直接將文件的內(nèi)容作為blob獲取。目前只支持Firefox。 收到整個(gè)文件后,將blob發(fā)送到函數(shù)以將其存儲(chǔ)在數(shù)據(jù)庫(kù)中。 4、初始化一個(gè)數(shù)據(jù)庫(kù)事物
要開(kāi)始向數(shù)據(jù)庫(kù)寫(xiě)入內(nèi)容,您需要使用objectStore名稱和要執(zhí)行的操作類型(在本例中為read和write)啟動(dòng)事務(wù)。 5、保存圖像blob到數(shù)據(jù)庫(kù)中去
一旦事務(wù)到位,您將獲得對(duì)所需objectStore的引用,然后將您的blob放入其中并為其提供密鑰。 6、讀出保存的文件并從中創(chuàng)建ObjectURL并將其設(shè)置為頁(yè)面中圖像元素的src
使用相同的事務(wù)來(lái)獲取剛剛存儲(chǔ)的圖像文件,然后創(chuàng)建一個(gè)objectURL并將其設(shè)置為頁(yè)面中圖像的src。 例如,這也可以是一個(gè)附加到腳本元素的JavaScript文件,然后它將解析JavaScript。 最后完整代碼
瀏覽器支持
Github源碼
該文章在 2024/10/9 11:03:36 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |