Браузер 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/

It looks nice too

Uploadify также выглядит многообещающе:http://www.uploadify.com/

вот демонстрация этого:http://www.uploadify.com/demos/

Я думаю, что проблема не в вашем коде, а в браузере Android по умолчанию, который вы используете.