0

Я использую Nexus 7 для тестирования, любые другие платформы не имеют такой же ситуации, насколько я могу проверить. Я использую handle.php для обработки загрузки, перед тем echo содержание файла, я использовал:Имя файла для загрузки Android не соответствует заголовку

header('Content-length:' . $row['size']); 
header('Content-type:' . $row['mime']); 

и

header('Content-Disposition:inline; filename="' . $row["file_name"] . '"'); 

тогда я использую андроид для загрузки файла, имя файла, однако handle.pdf, если я изменю последнюю строку своего кода на

header('Content-Disposition:attachment; filename="' . $row["file_name"] . '"'); 

и интересно, имя файла стало тем, что я хочу. Неужели Android не может получить имя файла, если Content-Disposition - inline и только принять имя файла с attachment? Кстати, я использовал собственный Браузер Chrome (32.0) и Android 4.4.2.

ответ

1

Per RFC 2616, Sec 19,

Поле заголовка отклика Content-Disposition было предложено в качестве средства для сервера происхождения, чтобы предложить имя файла по умолчанию, если пользователь запрашивает содержимое сохраняется в файл. Это использование получено из определения Content-Disposition в RFC 1806 [35].

Отметьте, что filename-parm указан только для вложений, а не для встроенного содержимого. Хотя на самом деле большинство браузеров анализируют параметр и чтят его, стандарт не требует такого поведения. Если вы намерены доставить файл для загрузки, вы должны указать , чтобы установить контент как attachment.

+0

Спасибо, и есть ли способ открыть рабочий стол для просмотра в браузере и мобильном устройстве, пока имя файла хранится так, как я хочу? – xhg

+0

Вам придется отправлять разные заголовки на основе UA. Отправить вложение с именем файла для мобильных браузеров и встроенным (с дополнительным именем файла) для настольных браузеров. Обратите внимание: многие сайты, например gmail, будут иметь ссылку «Просмотр» и «Загрузить», которая делает именно это. – 323go