2012-02-28 12 views
11

Estoy trabajando en una aplicación basada en web que potencialmente se utilizará en entornos con conexión a Internet inestable. Lo estoy implementando como una aplicación fuera de línea de HTML5 que utilizará el almacenamiento local HTML5 (en realidad jQuery plug-in jStorage). Se trata de una aplicación impulsada por la entrada de datos, por lo que todas las entradas nuevas creadas sin conexión se guardan en el almacenamiento local y se sincronizarán más adelante con el servidor cuando se restablezca la conectividad a Internet. Casi lo tengo funcionando, pero ahora estoy enfrentando un requisito en el que los usuarios necesitarán cargar una imagen junto con un envío de entrada de datos.
Encontré esta especificación de la API HTML5 - http://www.w3.org/TR/file-upload/ que habla sobre la carga de archivos y el acceso sin conexión. Antes de profundizar en esto, ¿hay alguna envoltura alrededor de esta funcionalidad que me simplifique esto?
También acabo de encontrar este artículo - http://hacks.mozilla.org/2010/02/an-html5-offline-image-editor-and-uploader-application/ que utiliza una API de TwitPic públicamente disponible y quería obtener algunos comentarios profesionales de la gente de aquí.

¡Gracias!Carga de archivos en aplicaciones fuera de línea HTML5

+0

No estoy muy seguro de que te entendamos. No puedes subir un archivo a un servidor fuera de línea. Período. La demostración a la que se conectó debe estar retenida en el archivo y esperando una conexión, pero no hay una forma mágica de estar fuera de línea. –

+3

@RaymondCamden - eso es exactamente lo que estaba buscando - mantenga el archivo (o su contenido) en alguna parte hasta que la conexión vuelva a estar disponible. Estoy escribiendo una aplicación "ocasionalmente conectada", que no puede confiar en que la conexión esté activa en todo momento. Almacena en caché los registros no sincronizados en el almacenamiento local HTML5 y los sincroniza con el servidor siempre que la conexión esté disponible. Me preguntaba cómo se puede lograr esto con los archivos. –

Respuesta

3

Sé que ha pasado un tiempo desde que pregunté esto, pero sigo viendo que esta pregunta es favorecida y votada, así que pensé en compartir cómo terminé resolviendo esto. En mi caso, los archivos no son tan grandes, así que simplemente decidí codificarlos MIME y luego almacenar la cadena en localStorage HTML5. Funciona como un encanto.

+1

Más detalles serían útiles. [Esta pregunta SO] (http://stackoverflow.com/questions/19183180/how-to-upload-an-image-save-it-to-localstorage-and-then-display-it-on-the-next) cubre imágenes, pero debe servir como un buen ejemplo de hacer lo que se describe de forma aproximada en esta respuesta. –

+0

Hola @insiderpro para que guarde las imágenes en el almacén local y ¿cómo las envía al servidor más adelante? Como base64? 10x – Bill

+1

@Bill, sí, los empujo al servidor como cadenas base64. –

1

No creo que localStorage sea la respuesta correcta aquí porque localStorage guarda solo cadenas y tiene un límite de almacenamiento de 5 megabytes.

puedo sugerir algo así como http://pouchdb.com

Pero si insiste en localStorage, a continuación, Mozilla Hacks tiene un artículo sobre almacenamiento de imágenes en localStorage: http://hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/

indexedDB podría ser un mejor lugar para almacenar archivos: http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/

Cuestiones relacionadas