我正在一个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加载文件的正确方法是什么?
2条答案
按热度按时间ttp71kqs1#
如果你的截图是准确的,那么
request.result
就不是一个图像,而是一个对象{id: '13388-7247-6247-62584', file: Blob, ...}
。你不仅存储了图像文件,还把它 Package 在一个对象中。所以你得到的是一个对象。请尝试
imgFile = request.result.file;
。332nm8kg2#
不能在回调内返回,应将其 Package 在承诺中。