Я работаю над веб-приложением, которое потенциально может использоваться в средах с нестабильным подключением к Интернету. Я реализую его как автономное приложение 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
ответ
Я знаю, что прошло некоторое время с тех пор, как я спросил об этом, но я все еще вижу, что этот вопрос является фаворитом и приоритетом, поэтому я решил, что поделюсь тем, как я решил это решить. В моем случае файлы не такие большие, поэтому я просто решил MIME закодировать их, а затем сохранить строку в HTML5 localStorage. Он работает как прелесть.
Более подробная информация будет удобна. [Этот вопрос SO] (http://stackoverflow.com/questions/19183180/how-to-upload-an-image-save-it-to-localstorage-and-then-display-it-on-the-next) охватывает изображения, но это должно служить хорошим примером того, что описано в этом ответе. –
Привет @insiderpro, поэтому вы сохраняете изображения в localstorage и как их выталкивать на сервер позже? Как base64? 10x – Bill
@Bill, да, я нажимаю их на сервер как строки base64. –
я написал статью некоторое время назад на HTML5 файл API - http://speckyboy.com/2012/10/30/getting-to-grips-with-the-html5-file-api-2/
относится также репо GitHub - https://github.com/mailru/FileAPI авансовых управления.
Не думаю, что 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/
Я не совсем уверен, что понимаю вас. Вы не можете загрузить файл на сервер в автономном режиме. Период. Демоверсия, с которой вы связаны, должна держаться за файл и ждать соединения, но нет волшебного способа обойти его в автономном режиме. –
@RaymondCamden - это именно то, что я искал, - держите файл (или его содержимое) где-нибудь, пока соединение не станет доступно снова. Я пишу «случайно подключенное» приложение, которое не может полагаться на соединение, которое должно быть всегда. Он кэширует незафиксированные записи в локальном хранилище HTML5 и синхронизирует их с сервером всякий раз, когда соединение доступно. Мне просто интересно, как это можно сделать с файлами. –