2012-02-28 1 views
11

Я работаю над веб-приложением, которое потенциально может использоваться в средах с нестабильным подключением к Интернету. Я реализую его как автономное приложение HTML5, которое будет использовать локальное хранилище HTML5 (на самом деле jQuery plug-in jStorage). Это приложение, управляемое данными, поэтому все новые записи, созданные во время автономной работы, сохраняются в локальном хранилище и позже будут синхронизированы с сервером при восстановлении подключения к Интернету. Я почти получил эту работу, но теперь я столкнулся с требованием, когда пользователям действительно нужно загрузить изображение вместе с представлением ввода данных.
Я нашел эту спецификацию HTML5 API - http://www.w3.org/TR/file-upload/, которая рассказывает о загрузке файлов и автономном доступе. Прежде чем я углубится в это - есть ли какие-либо обертки вокруг этой функции, которые упростили бы это для меня?
Я также только что нашел эту статью - http://hacks.mozilla.org/2010/02/an-html5-offline-image-editor-and-uploader-application/, которая использует общедоступный TwitPic API, и я хотел бы получить некоторые профессиональные отзывы от людей здесь.

Спасибо!Загрузка файлов в офлайн-приложениях HTML5

+0

Я не совсем уверен, что понимаю вас. Вы не можете загрузить файл на сервер в автономном режиме. Период. Демоверсия, с которой вы связаны, должна держаться за файл и ждать соединения, но нет волшебного способа обойти его в автономном режиме. –

+3

@RaymondCamden - это именно то, что я искал, - держите файл (или его содержимое) где-нибудь, пока соединение не станет доступно снова. Я пишу «случайно подключенное» приложение, которое не может полагаться на соединение, которое должно быть всегда. Он кэширует незафиксированные записи в локальном хранилище HTML5 и синхронизирует их с сервером всякий раз, когда соединение доступно. Мне просто интересно, как это можно сделать с файлами. –

ответ

3

Я знаю, что прошло некоторое время с тех пор, как я спросил об этом, но я все еще вижу, что этот вопрос является фаворитом и приоритетом, поэтому я решил, что поделюсь тем, как я решил это решить. В моем случае файлы не такие большие, поэтому я просто решил MIME закодировать их, а затем сохранить строку в HTML5 localStorage. Он работает как прелесть.

+1

Более подробная информация будет удобна. [Этот вопрос SO] (http://stackoverflow.com/questions/19183180/how-to-upload-an-image-save-it-to-localstorage-and-then-display-it-on-the-next) охватывает изображения, но это должно служить хорошим примером того, что описано в этом ответе. –

+0

Привет @insiderpro, поэтому вы сохраняете изображения в localstorage и как их выталкивать на сервер позже? Как base64? 10x – Bill

+1

@Bill, да, я нажимаю их на сервер как строки base64. –

1

Не думаю, что localStorage будет правильным ответом здесь, потому что localStorage сохраняет только строки и имеет ограничение на хранение в 5 мегабайт.

я предлагаю что-то вроде http://pouchdb.com

Но если вы настаиваете на localStorage, то Mozilla Hacks есть статья о хранении изображений в localStorage: http://hacks.mozilla.org/2012/02/saving-images-and-files-in-localstorage/

indexedDB может быть лучшим местом для хранения файлов: http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/