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
Odpowiedz
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.
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. –
Hi @insiderpro, więc zapisujesz obrazy w localstorage i jak je później przekazujesz na serwer? Jako base64? 10x – Bill
@Bill, tak, wypycham je na serwer jako ciągi base64. –
napisałem artykuł jakiś czas temu na HTML5 plików API - http://speckyboy.com/2012/10/30/getting-to-grips-with-the-html5-file-api-2/
zapoznać się również repo GitHub - https://github.com/mailru/FileAPI kontrole wyprzedzeniem.
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/
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. –
@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. –