Pytanie Przechowywanie offline w HTML5. Nośnik danych? Katalogi i interfejs API systemu plików


Do przechowywania danych w trybie offline WebApp może używać:

Ale najwyraźniej nie ma magazynu plików. Oczywiście istnieje buforowanie oparte na manifestach, ale jest to po prostu pamięć podręczna i nie powinna być używana jako pamięć danych użytkownika.

Czy to oznacza, że ​​użytkownik WebApp jest zmuszony do korzystania z jakiegoś magazynu plików w chmurze?

Czy istnieje sposób na zapisanie dużych plików na lokalnym komputerze użytkownika? A może jakiś sposób wyboru aplikacji internetowej do folderu lokalnego może służyć do przechowywania danych użytkownika?

Edytować. Bezpieczeństwo. HTML5 ma już możliwość pisania dużych porcji danych na komputerze lokalnym użytkownika. Nie widzę żadnych problemów związanych z bezpieczeństwem, jeśli przeglądarka udostępni inną, opartą na plikach abstrakcję do przechowywania danych. Może to być jakaś maszyna wirtualna, wirtualny system plików, cokolwiek.

Hm, myślę, że możliwe jest napisanie systemu plików JS i przechowywanie go jako bloba w SQL ...

Podobny  pytania.

Aktualizacja: Hm ... ostatnio znalazłem to i to. Może to jest to, czego szukam ... Tak, jest! Zobacz odpowiedź poniżej.


20
2017-10-14 19:19


pochodzenie




Odpowiedzi:


W końcu znalazłem to! Oto odpowiedź:

Poproszę DOMFileSystem o stronę dostępu do odczytu / zapisu napisał:

Eric Uhrhane z Google został   praca nad roboczym projektem    API pliku: katalogi i specyfikacja systemu który definiuje zestaw   Interfejsy API do tworzenia piaskownicowego systemu plików   gdzie aplikacja internetowa może czytać i pisać   dane do.

Łał! Jestem taki podekscytowany!


17
2017-12-12 14:09



Awansuj za to, że się nie poddajesz i zawsze szukasz. I kudos za powrót i zapewnienie aktualizacji. - mt3


Dlaczego nie skorzystać localStorage podczas gdy użytkownik edytuje dokument i FileWriter API, kiedy chcą go zapisać na dysku? Większość ludzi przyzwyczaja się do otwierania okna zapisu podczas zapisywania dokumentu.

Jedyny scenariusz, jaki mogę wymyślić, gwarantuje dostęp bez użytkownika do FileWriter API to funkcja autozapisu, ale autozapisywanie do localStorage może być równie dobry.


6
2017-12-07 14:45



Innym scenariuszem jest odtwarzacz multimedialny. W jaki sposób aplikacja HTML5 ma odtwarzać pliki użytkownika? - Vanuan
Prawdopodobnie możesz zrobić prymitywny odtwarzacz multimedialny z <input type="file"> (aby umożliwić użytkownikowi wybranie pliku) i JavaScript (aby ustawić srcatrybut odpowiadającego <audio> lub <video> element). W pełni funkcjonalna przeglądarka multimedialna prawdopodobnie nie wchodzi w grę. - Richard Poole


Istnieje sposób na zapisanie stosunkowo dużych plików na dysku twardym użytkowników, jeśli chcesz używać Flasha. Zajrzyj do Downloadify:

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

Program Downloadify umożliwia wysyłanie danych do pliku SWF i utworzenie pliku SWF na komputerze użytkownika. Moim zaleceniem byłoby przechowywanie danych za pomocą jednej z wymienionych metod, bazy Webstorage, bazy danych SQLite itp. Wszystkie pliki, w tym plik SWF, należy umieścić w pliku manifestu, aby wszystko było buforowane lokalnie do przeglądarki. Następnie można pobrać informacje z bazy danych lub magazynu internetowego i użyć pliku SWF do utworzenia potrzebnych plików.

Nie jestem pewien, czy będziesz mógł odczytać te pliki z powrotem do swojej aplikacji internetowej.

Inną opcją zapisywania danych jest użycie tagów linków z schemat danych identyfikatora danych. Jednak nie jestem pewien, czy jest on obsługiwany we wszystkich głównych przeglądarkach.


3
2017-12-05 04:23



Obecna wersja wszystkich głównych przeglądarek obsługuje identyfikatory URI danych, ale IE8 jest ograniczony do 32 KB, co ogranicza jego użyteczność dla "dużych" plików. - Ken


Ze względów bezpieczeństwa nie można zapisywać plików w lokalnym systemie plików użytkownika, jeśli zostanie on wykorzystany w złych celach przez złych ludzi.

To się nie zmieni, a to dobrze.


2
2017-10-15 15:15



Myślę, że to nie jest dobra rzecz. WebApps stają się coraz bardziej "zmarnowane", a mniej "darmowe". A może zaimplementujesz notatnik offline w HTML5? - Vanuan
Nie mówię o lokalnym systemie plików. Niektóre wirtualne systemy plików "piaskownicy" byłyby w porządku. HTML5 ma już możliwość odczytu i zapisu współużytkowanej bazy danych SQL. Co powiesz na przydzielenie pustego folderu dla aplikacji internetowej do przechowywania danych? - Vanuan


Interfejs API FileSystem HTML5 zaczął lądowanie w Chrome 8 i jest dość kompletny (Chrome 11).

Tutaj jest ładny tutorial: http://www.html5rocks.com/tutorials/file/filesystem/


1
2018-05-18 17:23





http://fsojs.com skutecznie opakowuje interfejs API FileSystem, jeśli potrzebujesz prostego rozwiązania


0
2018-02-28 14:19





Jak wspominają tutaj inni, FileWriter i System plików Interfejsy API mogą być używane do przechowywania plików na komputerze klienta z kontekstu karty / okna przeglądarki.

Jest jednak kilka rzeczy związanych z tymi interfejsami API, o których powinieneś wiedzieć:

  • Implementacje interfejsów API istnieją obecnie tylko w przeglądarkach opartych na Chromium (Chrome i Opera)
  • Oba interfejsy API zostały usunięte ze ścieżki standardów W3C 24 kwietnia 2014 r. I od tego czasu są zastrzeżone
  • Usunięcie (obecnie zastrzeżonych) API z implementacji przeglądarek w przyszłości jest możliwe
  • ZA piaskownica (lokalizacja na dysku, poza którego pliki nie dają żadnego efektu) jest używana do przechowywania plików utworzonych za pomocą interfejsów API
  • ZA wirtualny system plików (używana struktura katalogów, która niekoniecznie istnieje na dysku w tej samej formie, w jakiej jest uzyskiwany przy dostępie z przeglądarki) reprezentuje pliki utworzone za pomocą interfejsów API

IsolatedStorage, które nie zostało jeszcze wspomniane, pozwala również na zapisywanie plików i / o z kontekstu tab / okna, ale jest udostępniane wyłącznie za pośrednictwem Silverlight i wymaga użycia kod zarządzany mieć dostęp. Podobnie jak FileSystem istnieje również w piaskownicy i korzysta z wirtualnego systemu plików.

Biorąc pod uwagę dużą penetrację rynku zarówno przeglądarek opartych na Chromium, jak i Silverlight (wsparcie, o które, co ciekawe, zostało odrzucone przez takie przeglądarki), można znaleźć rozwiązanie, które wykorzystuje pierwsze z powyższych podejść dostępnych na komputerze klienta.

Wypieki, Przykładem takiego rozwiązania jest biblioteka JavaScript, która ustanawia jednolity interfejs, który może być używany do przeprowadzania typowych operacji składowania we wszystkich natywnych (w tym FileSystem) i niektórych obcych obiektach (w tym IsolatedStorage).

//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){}
});

Tylko ze względu na całkowitą przejrzystość, BakedGoods jest utrzymywany przez tego gościa tutaj :).


0
2017-07-07 17:22