javascript html5 blob filereader indexeddb

javascript - IndexedDB: Almacene el archivo como Archivo o Blob o ArrayBuffer. ¿Cuál es la mejor opción?



mozilla indexeddb (2)

Este es un asunto discutible, pero hay algunas líneas que podemos dibujar aquí, estoy citando a MDN aquí:

La interfaz del archivo se basa en Blob, heredando la funcionalidad de blob y expandiéndola para admitir archivos en el sistema del usuario.

así que entre archivo y blob, es una cuestión de funcionalidad necesaria (mi preferencia es blob, ya que es un poco más práctico).

ahora entre blob y ArrayBuffer, este es complicado, ya que depende totalmente de lo que necesite, ArrayBuffer es muy útil en algunos casos pero es estructurado y es un

contenedor de longitud fija para datos binarios

por lo que su tamaño de archivo puede hacer una gran diferencia.

Otro punto importante es que ArrayBuffer está en la memoria, mientras que el blob puede estar en cualquier lugar, en el disco o en la memoria, por lo que con el uso de blob puede estar reduciendo mucho la cabeza. así que para tu caso, imho, blob gana.

ahora en una nota al margen, no sé qué intenta hacer exactamente, pero almacenar todo el archivo en una base de datos no es una buena idea, a menos que su objetivo esté indexando todo el contenido del archivo y consultándolo, porque no todos los usuarios los dispositivos pueden manejar ese tipo de sobrecarga, por lo tanto, si no necesita el contenido, solo indexe los nombres de los archivos, ahorra tiempo y espacio de almacenamiento.

Espero que esto ayude.

Ahora la mayoría de los navegadores son compatibles con IndexedDB para almacenar datos / archivos directamente como File , Blob o ArrayBuffer .

Este código guarda una clave IDB ''File1'' como archivo

<input type="file" id="userfile" /> var a = document.getElementById("userfile"); var b = a.files[0];

Ahora podemos guardar directamente este archivo en IDB usando el siguiente código

//LocalForage is a library for indexedDB developed by Mozilla //Note: localforage._config.driver=asyncStorage (IDB method) function run(){ //"File1" = IDB data table key and b=value localforage.setItem("File1", b, function(err, value) { console.log(err) }); } a.onchange = function(){ run() }

Este código guarda una clave IDB ''BlobFile'' como Blob

mb = new Blob([b],{type:b.type}); function runB(){ localforage.setItem("BlobFile", mb, function(err, value){ console.log(err) }); } a.onchange = function(){ runB() }

Quiero saber cuál es la mejor práctica para almacenar el archivo en el BID. (Archivo / Blob / ArrayBuffer)

Los archivos pueden ser imágenes o videos de tamaño muy pequeño.