webs uso permite las cache application aplicaciones html5 filesystems filereader filewriter

cache - html5 permite el uso de las webs offline



Almacenamiento offline HTML5. ¿Almacenamiento de archivos? Directorios y API del sistema de archivos (7)

Para almacenar datos fuera de línea, la aplicación web puede usar:

Pero al parecer no hay almacenamiento de archivos. Por supuesto, hay un almacenamiento en caché basado en manifiestos , pero es solo un caché y no se supone que se use como un almacenamiento de datos del usuario.

¿Significa que el usuario de WebApp está obligado a usar algún tipo de almacenamiento de archivos en la nube?

¿Hay alguna forma de guardar archivos grandes en la máquina local del usuario? ¿O tal vez alguna forma de seleccionar una carpeta local que la aplicación web pueda usar para almacenar datos de usuarios?

Editar Seguridad. HTML5 ya tiene la capacidad de escribir grandes porciones de datos en la máquina local del usuario. No veo ningún problema de seguridad si un navegador proporciona otra abstracción basada en archivos para almacenar datos. Puede ser alguna máquina virtual, sistema de archivos virtual, lo que sea.

Hm, creo que es posible escribir el sistema de archivos JS y almacenarlo como un blob en SQL ...

questions Similar .

Actualización : Hm ... recientemente he encontrado this y this . Tal vez sea lo que estoy buscando ... ¡Sí, lo es! Vea la respuesta a continuación.


Como mencionaron otros aquí, las API FileWriter y FileSystem pueden usarse para almacenar archivos en la máquina de un cliente desde el contexto de una pestaña / ventana del navegador.

Sin embargo, hay varias cosas relacionadas con estas API que debe tener en cuenta:

  • Actualmente, las implementaciones de las API solo existen en los navegadores basados ​​en Chromium (Chrome y Opera)
  • Ambas API se retiraron de la pista de estándares del W3C el 24 de abril de 2014 y, a partir de ahora, son de propiedad exclusiva.
  • La eliminación de las API (ahora propietarias) de la implementación de navegadores en el futuro es una posibilidad
  • Una caja de arena (una ubicación en el disco fuera de la cual los archivos no pueden producir ningún efecto) se utiliza para almacenar los archivos creados con las API
  • Un sistema de archivos virtual (una estructura de directorios que no necesariamente existe en el disco en la misma forma en que se usa cuando se accede desde el navegador) representa los archivos creados con las API

IsolatedStorage , que todavía no se ha mencionado, también permite la entrada / salida de archivos desde un contexto de pestañas / ventanas, pero está disponible únicamente a través de Silverlight y requiere el uso de código administrado para acceder. Al igual que FileSystem, también existe en un sandbox y utiliza un sistema de archivos virtual.

Dada la alta penetración en el mercado de los navegadores basados ​​en Chromium y Silverlight (para los cuales se ha descartado la compatibilidad con estos navegadores), puede encontrar una solución que use el primero de los enfoques anteriores disponibles en una máquina cliente.

BakedGoods , una biblioteca de Javascript que establece una interfaz uniforme que se puede usar para llevar a cabo operaciones de almacenamiento comunes en todas las instalaciones de almacenamiento nativas (incluido FileSystem) y algunas no nativas (incluido IsolatedStorage), es un ejemplo de esta solución:

//Write file to first of either FileSystem or IsolatedStorage bakedGoods.set({ data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}], storageTypes: ["fileSystem", "silverlight"], options: {fileSystem:{storageType: Window.PERSISTENT}}, complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){} });

Solo por el bien de la transparencia completa, BakedGoods es mantenido por este tipo aquí :).


Hay una forma de guardar archivos relativamente grandes en el disco duro de un usuario si está dispuesto a usar Flash. Mira en Downloadify:

http://www.bitrepository.com/downloadify-client-side-file-generation.html

Downloadify le permite enviar datos a un SWF y hacer que ese SWF cree un archivo en la máquina de los usuarios. Mi recomendación sería almacenar los datos a través de uno de los métodos que enumeró, Webstorage, base de datos sqlite, etc. Coloque todos sus activos, incluido el SWF en el archivo de manifiesto para que todo se almacene en caché localmente en el navegador. Luego puede extraer información de su base de datos o almacenamiento web y usar el SWF para crear los archivos que necesita.

No estoy seguro de si podrá volver a leer estos archivos en su aplicación web.

Otra opción para guardar datos es mediante el uso de etiquetas de enlace con el esquema de URI de datos . Sin embargo, no estoy seguro de si es compatible con todos los principales navegadores en este momento.




Por razones de seguridad, no puede escribir archivos en el sistema de archivos local de un usuario en caso de que sea utilizado por personas malvadas para propósitos infames.

Eso no es probable que cambie, y eso es algo bueno.


¿Por qué no usar localStorage mientras el usuario está editando un documento y la API FileWriter cuando quieren guardarlo en el disco? La mayoría de las personas están acostumbradas a ver un cuadro de diálogo emergente al guardar un documento.

El único escenario en el que puedo pensar que garantiza el acceso sin usuario a la API FileWriter es una función de guardado automático, pero el guardado automático en localStorage puede ser igual de bueno.


http://fsojs.com envuelve la API del sistema de archivos de manera efectiva, si desea una solución fácil