Браузер Android обновляет страницу после выбора файла через элемент ввода
У меня есть мобильная веб-страница, которая включает элемент ввода типа "файл", чтобы пользователи могли загружать файлы изображений на сервер. Страница отлично работает на iOS и на Nexus 4 (Android 4.2.1) в браузере Chrome.
когда я использую Samsung S3 (Android 4.0.4) с браузером по умолчанию, нажав на кнопку "Выбрать файл", открывается диалоговое окно выбора изображения, как и ожидалось, однако после выбора изображения и закрытия диалога веб-страница обновляется, поэтому я теряю изображение, которое было выбранный. Кто-нибудь еще видел такое поведение? Любые предложения по обходному пути?
элемент ввода, который я использую, довольно стандартный и выглядит так:
<input id="addPhoto" type="file" accept="image/*"/>
даже без атрибута "accept" я получаю ту же проблему.
3 ответов
посмотрите этот вопрос:
https://code.google.com/p/android/issues/detail?id=53088
в основном, кажется, происходит следующее:
Android не имеет достаточно памяти для выбора файла или приложения камеры.
он освобождает память при закрытии браузера
после закрытия выбора файла / камеры браузер открывается снова, вызывая обновление страницы, которое делает весь файл выбора упражнения бесполезным.
Мне кажется, что это вне контроля любого решения на основе браузера но я хотел бы быть опровергнуты на этом предположении.
У меня такая же проблема по телефону с Andriod 2.3.6. У одного из моих коллег нет проблемы с телефоном (не могу вспомнить, что это работает). Он предположил, что это может быть проблема с памятью. Если у телефона недостаточно доступной памяти, браузер может быть фактически вынужден перезагрузить страницу после выбора изображения, что противоречит цели. Я еще не удалось подтвердить, что это проблема, но мой телефон имеет значительно меньше доступной памяти чем его.
вы можете попробовать этот метод JQuery:http://blueimp.github.com/jQuery-File-Upload/
Uploadify также выглядит многообещающе:http://www.uploadify.com/
вот демонстрация этого:http://www.uploadify.com/demos/
Я думаю, что проблема не в вашем коде, а в браузере Android по умолчанию, который вы используете.