Android HTTP заголовок вложения имя файла игнорируется - PullRequest
1 голос
/ 15 марта 2012

У меня есть магазин, который позволяет людям скачивать приобретенные ими mp3-файлы.URL, который они вводят для загрузки mp3, имеет вид:

http://domainName/download.php?a=123&b=456

Вот типичный заголовок, который моя php-программа отправляет в браузер (захваченный с помощью Fiddler):

Cache-Control: must-revalidate, post-check=0, pre-check=0
Content-Type: audio/mpeg
Content-Length: 3011430
Content-Disposition: attachment;filename="AIR FOR PIPES.MP3";

На планшете Android (ASUS Transformer) до 4.0 или после 4.0 загруженный файл называется «download.php», а не «AIR FOR PIPES.MP3».Другими словами, браузер игнорирует имя файла вложения.По крайней мере, песня играет хорошо, даже с суффиксом .php!Любопытно, что на телефоне Samsung Charge Android 2.3.6 имя файла «AIR_FOR_PIPES.MP3» (телефон добавил подчеркивание, что нормально).В Windows этот код отлично работает в IE, Firefox, Chrome и Safari.Только планшет дает мне горе от имени файла.

Другие сайты предлагают, чтобы у меня не было пробела после ";"и mp3 должен быть заглавными буквами - и это не решение.Другая информация предполагает, что это известная ошибка в POST, но, как вы можете видеть, я делаю только GET.Я также попытался указать «application / octet-stream», но он не делает различий.

Есть ли какие-то настройки планшета, из-за которых файл изначально назывался «Без названия», но в конечном итоге сохранялся как «download.php»?(Мой планшет зашифрован - не уверен, что это актуально.)

РЕДАКТИРОВАТЬ / ОТВЕТ: (форум не позволяет мне ответить на мой собственный вопрос) Очевидно, планшет не будет допускать пробелы в прикрепленном имени файла.Я удалил их, и имя файла было записано правильно как AIRFORPIPES.MP3.

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Форум теперь позволяет мне ответить на мой собственный вопрос.Как уже упоминалось выше, в моем редакторе планшет Android не будет принимать пробелы в имени файла и подчеркивания, даже если телефон Droid преобразует пробелы в подчеркивания!Планшет Android преобразует AIR% 20FOR% 20PIPES в AIR FOR PIPES, но телефон Droid преобразует его в AIR 20FOR 20PIPES, поэтому на самом деле общим решением является удаление пробелов из имени файла перед отправкой заголовка.

0 голосов
/ 15 марта 2012

Я вполне уверен, что в конечном итоге это проблема реализации браузера.( Здесь пост, описывающий проблемы IE с этим заголовком).Многие производители настраивают браузер, поэтому не будет шокирующим увидеть различия в реализации между устройствами Android.Предложение Марка Б. попробовать разные браузеры является хорошим.Я сомневаюсь, что вы найдете параметр, чтобы исправить это, к сожалению.

...