2013-06-28 3 views
0

Я думал, что перепечатывать это, так как у меня есть более подробная информация:Android Chrome браузер без необходимости переименовывает имена & тип загружаемых файлов

ВОПРОС: Android Chrome браузер переименовывает файл в «Загрузить» во всех случаях. Он переименовывает тип в «.bin» в некоторых случаях (если, например, расширение является .MOV). Как я уже упоминал ранее, приложения браузера Firefox и Dolphin на одном устройстве Android не проявляют такого поведения. Файлы загружаются правильно. В качестве побочного примечания я уже пробовал указать атрибут «Загрузить» в элементе Anchor без везения. Атрибут «Загрузить» в этом случае игнорируется даже браузером Android Chrome. Моя догадка заключается в том, что это связано с тем, как мы передаем файл, который игнорируется атрибутом «загрузка». Другое дело, что настольная версия браузера Chrome загружает файлы без проблем (без переименования). Я думаю, что есть некоторая функция безопасности, встроенная в браузер Chrome, которая вызывает эти проблемы переименования.

ПРЕДПОСЫЛКА ИНФОРМАЦИИ: веб-сервер IIS 7.5 на облаке Windows Azure. Используемым веб-приложением является среда Microsoft MVC для маршрутизации. Поэтому, когда файл выбирается для загрузки из браузера Chrome на устройстве Android, доступ к нему осуществляется с помощью маршрутизации MS MVC. В рамках этого метода мы указываем информацию заголовка и потоковое разделение фрагментов файла с помощью httpResponse. Это прекрасно работает для любого другого приложения-браузера на устройстве Android (например, Firefox и Dolphin) и может сохранять с правильным именем и типом файла. Однако с Chrome файл и тип (иногда) переименовываются.

Вот заголовки ответа, когда я загрузить .MOV файл:

* HTTP/1.1 200 OK Cache-Control: частный, s-MaxAge = 0 Content-Length: 54295903 Content-Type : application/octet-stream Сервер: Microsoft-IIS/7.5 X-AspNetMvc-Version: 4.0 Content-Disposition: attachment; Имя файла = UTF-8''MyVideo.MOV X-Сеть САШ-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: Сб, 29 июня 2013 5:01:32 GMT **

ПОМОЩЬ !: Я был бы признателен за любые советы по работе. Кроме того, я был бы признателен за определенное слово от кого-то, кто работает в сообществе разработчиков Google, относительно того, будет ли это исправлено в следующем обновлении. Благодаря!!

+0

Можете ли вы опубликовать ссылку, которая позволит нам увидеть поведение для себя и посмотреть, есть ли что-нибудь примечательное в заголовках ответов, которые могли бы объяснить это? – CommonsWare

+0

Я захватил заголовки ответов, используя инструменты chrome dev. Вот оно: HTTP/1.1 200 OK Cache-Control: частный, S-MaxAge = 0 Content-Length: 54295903 Content-Type: применение/октет-поток Сервер: Microsoft-IIS/7.5 X-AspNetMvc- Версия: 4.0 Content-Disposition: attachment; filename * = UTF-8''MyVideo.MOV X-AspNet-Version: 4.0.30319 X-Powered by By: ASP.NET Дата: сб, 29 июн 2013 05:01:32 GMT – TheDude

+0

Может быть что-то делать с добавлением UTF-8 к имени файла? На рабочем столе Chrome браузер не влияет, но это может повлиять на браузер Chrome Chrome. Как вы думаете? – TheDude

ответ

3

Content-Disposition имеет проблемы с Android. Вы, безусловно, можете попробовать удалить часть UTF-8 и посмотреть, помогает ли это Chrome. Но определенно проверьте исходное приложение Android Browser, так как численно это самый популярный браузер для Android.

Смотрите также:

+0

Спасибо. Очень полезно. Я попробую изменить Content-Disposition. Другое дело, что для Content-Disposition задано значение: filename * = UTF-8 «MyVideo.MOV В примерах, которые я видел, это * до = в моем случае, похоже, не принадлежит. что может смутить браузер Android Chrome? – TheDude

0

Это дубликат предыдущий вопрос мы ответили live on air и SO здесь https://stackoverflow.com/questions/17266320/chrome-browser-in-android-always-renames-downloaded-file-to-download-bin, который был вычеркивать знак Тед.

Это будет исправлено в следующем обновлении, особенно через атрибут [download].

+0

Эй, Кинлан, я ценю, что вы пытаетесь помочь мне и извиниться за то, что не предоставляете более подробную информацию. Оказывается, браузер Android Chrome, похоже, имеет проблему с кодировкой UTF-8 в имени файла В нашем коде мы кодируем имя файла с кодировкой UTF-8 для обработки символов, отличных от ascii. Но браузер Android Chrome, похоже, задыхается от этого, так как он правильно загружается, когда я выхожу из UTF-8. – TheDude

+0

Spec для disposition не имеет никакого упоминания о том, что UTF-8 является действительным вообще, поэтому я думаю, что его следует удалить в соответствии с вышеприведенным ответом. – Kinlan

+0

Итак, как в будущем андроид-хром обрабатывает символы не-ascii в именах файлов? браузер способен обрабатывать кодировку utf-8 o f имя файла в content-disposition, кстати. – TheDude

2

У меня была аналогичная проблема с загрузками на Chrome/Android. .docx файлы были переименованы в filename.bin (или что-то в этом роде).

Заголовки включены

Content-Type:application/octet-stream 

и

Content-Disposition:attachment; filename="something.docx"; 

Оказалось, что моя проблема была в задней точкой с запятой в "Content-Disposition" заголовком. Когда нет точки с запятой в конце строки - это работает отлично:

Content-Disposition:attachment; filename="something.docx" 

Больше информации здесь: http://www.digiblog.de/2011/04/android-and-the-download-file-headers/

Итак, не забудь проверить, что хорошо.