2012-02-28 9 views
11

Pracuję nad aplikacją internetową, która będzie potencjalnie używana w środowiskach z niestabilnym połączeniem z Internetem. Wdrażam go jako aplikację offline HTML5, która wykorzystuje lokalną pamięć HTML5 (w rzeczywistości jStorage jQuery plug-in). Jest to aplikacja napędzana danymi wejściowymi, więc wszystkie nowe wpisy utworzone podczas pracy w trybie offline są zapisywane w pamięci lokalnej i będą synchronizowane później z serwerem, gdy przywrócona zostanie łączność z Internetem. Prawie udało mi się, że działa, ale teraz mam do czynienia z wymaganiem, gdy użytkownicy będą musieli przesłać obraz wraz z przesłaniem danych.
Znalazłem tę specyfikację API HTML5 API - http://www.w3.org/TR/file-upload/, która mówi o przesyłaniu plików i dostępie offline. Zanim przejdę do tego zbyt głęboko - czy są jakieś owijki wokół tej funkcjonalności, które uprościłyby to dla mnie?
Również znalazłem ten artykuł - http://hacks.mozilla.org/2010/02/an-html5-offline-image-editor-and-uploader-application/, który wykorzystuje publicznie dostępne API TwitPic i chciałem uzyskać profesjonalne opinie od ludzi tutaj.

Dziękujemy!Przesyłanie plików w aplikacjach offline HTML5

+0

Nie jestem całkiem pewien, że cię rozumiem. Nie możesz przesłać pliku na serwer w trybie offline. Kropka. Demo, z którym się łączysz, musi trzymać się pliku i czekać na połączenie, ale nie ma magicznego sposobu, by poruszać się w trybie offline. –

+3

@RaymondCamden - dokładnie tego szukałem - przytrzymaj plik (lub jego zawartość), dopóki połączenie nie stanie się znów dostępne. Piszę "sporadycznie połączoną" aplikację, która nie może liczyć na to, że połączenie będzie zawsze aktywne. Przechowuje "niezsynchronizowane rekordy w lokalnej pamięci HTML5 i synchronizuje je z serwerem za każdym razem, gdy połączenie jest dostępne. Zastanawiałem się, jak można to osiągnąć za pomocą plików. –

Odpowiedz

3

Wiem, że minęło trochę czasu, odkąd o to poprosiłem, ale nadal widzę, że to pytanie jest faworyzowane i wznowione, więc pomyślałem, że podzielę się tym, jak doszło do rozwiązania tego problemu. W moim przypadku pliki nie są zbyt duże, więc po prostu zdecydowałem się je kodować, a następnie przechowywać ciąg w lokalnym pliku HTML5. Działa jako urok.

+1

Więcej szczegółów byłoby przydatne. [To SO pytanie] (http://stackoverflow.com/questions/19183180/how-to-upload-an-image-save-it-to-localstorage-and-then-display-it-on-the-next) obejmuje obrazy, ale powinno to być dobrym przykładem robienia tego, co jest z grubsza opisane w tej odpowiedzi. –

+0

Hi @insiderpro, więc zapisujesz obrazy w localstorage i jak je później przekazujesz na serwer? Jako base64? 10x – Bill

+1

@Bill, tak, wypycham je na serwer jako ciągi base64. –

1

Nie sądzę, że localStorage będzie właściwą odpowiedzią, ponieważ localStorage zapisuje tylko ciągi i ma limit 5 megabajtów.

Proponuję coś http://pouchdb.com

Ale jeśli nalegać na localStorage, następnie Mozilla Hacks ma artykuł na temat przechowywania obrazów w localStorage: http://hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/

indexedDB może być lepsze miejsce do przechowywania plików: http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/