Estoy trabajando en un proyecto de PWA en el que creé un IndexedDB y almacené las imágenes y videos en él. En la próxima recarga de la página, si la imagen/video está disponible en IndexedDB, debería cargarlo desde allí.
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; }; } Siempre devuelve undefined . Cuando consola.log el imgFile, muestra que está allí en IndexedDB:
Archivo en IndexedDB:
También he intentado esto pero sin éxito todavía:
var imgURL = window.URL.createObjectURL(new Blob(imgFile, {'type': 'application/octet-stream'}));¿Cuál es el enfoque correcto para cargar los archivos de IndexedDB?
Si su captura de pantalla es precisa, entonces request.result no es una imagen, es un objeto {id: '13388-7247-6247-62584', file: Blob, ...} . No solo almacenó el archivo de imagen, lo envolvió en un objeto. Entonces, lo que obtienes de vuelta es un objeto.
Pruebe imgFile = request.result.file; en cambio.