从IndexedDB加载图像/视频

0aydgbwb  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(2)|浏览(194)

我正在一个PWA项目上工作,我已经创建了一个IndexedDB,并在其中存储了图像和视频。在下一次重新加载页面时,如果indexedDB中有图像/视频,它应该从那里加载。

function fetchMedia(id) {
    var transaction = db.transaction(["media"]);
    var objectStore = transaction.objectStore("media");
    var request = objectStore.get(id);

    request.onerror = function(event) {
       console.log("Unable to retrieve daa from database!");
       return "";
    };

   request.onsuccess = function(event) {
       var imgFile = request.result;
       console.log(imgFile)
       var imgURL = window.URL.createObjectURL(imgFile);
       return imgURL;
   };
}

它总是返回undefined。当我console.log imgFile时,它显示它在IndexedDB中:

IndexedDB中的文件:

我也尝试过,但还没有成功:

var imgURL = window.URL.createObjectURL(new Blob(imgFile, {'type': 'application/octet-stream'}));

从IndexedDB加载文件的正确方法是什么?

ttp71kqs

ttp71kqs1#

如果你的截图是准确的,那么request.result就不是一个图像,而是一个对象{id: '13388-7247-6247-62584', file: Blob, ...}。你不仅存储了图像文件,还把它 Package 在一个对象中。所以你得到的是一个对象。
请尝试imgFile = request.result.file;

332nm8kg

332nm8kg2#

不能在回调内返回,应将其 Package 在承诺中。

相关问题