Internet Explorer Content-DIsposition имя файла не работает - PullRequest
3 голосов
/ 23 ноября 2010

сейчас я отправляю в php (позже заменяемый на nodejs) заголовки для загрузки файла следующим образом:

    <?php
    // example array for .exe (for IE, doesnt work)
    // i also tried x-msdownload
    $file = array( 'octet-stream', 'download.exe' );
    header( 'HTTP/1.0 200 OK' );
    header( 'Content-Type: application/'.$file[0] );
    // thats the part that doesnt work - i tried inline; attachment; with quotes, without quotes, single quotes, ending ; no ending ;...
    header( 'Content-Disposition: filename="'.$file[1].'";' );
    header( 'Content-Length: '.filesize( $file[1] ) );
    readfile( $file[1] );
    exit;
    ?>

результат всегда один и тот же - я переписываю загруженные файлы в такую ​​папку: / download / 123 / - заголовок расположения содержимого должен отвечать правильному имени файла, но IE показывает как имя файла "123" и "Неизвестный тип файла" ... теперь даже если я переписываю все после идентификатора в папки index.php и запрашиваю например: /download/123/something.exe, он по-прежнему будет отображать как «что-то» и «неизвестный тип файла». независимо от того, что я установил как тип контента или как я заказываю значения расположения контента.

Насколько я мог прочитать, это обычная проблема IE, которая так и не была устранена - кто-нибудь знает, как обойти эту проблему?

спасибо!

РЕДАКТИРОВАТЬ: просто чтобы убедиться, что все знают, что я хочу, как правильный результат: IE должен получить его .EXE файл и предложить диалог «Выполнить - Сохранить - Отмена» вместо стандартного «Неизвестный тип файла» Find - Сохранить - Отмена ». Кстати. если я нажимаю на кнопку найти, он перенаправляет меня на страницу Microsoft, которая объясняет, что такое x-msdownload (которая сейчас установлена ​​как тип контента) ...

1 Ответ

2 голосов
/ 23 ноября 2010

Заголовок Content-Disposition является неполным, он должен быть:

 header("Content-Disposition: inline; filename=xyz.exe");

Имя файла - это просто параметр. Вы также можете попробовать attachment, если хотите форсировать диалог сохранения.

Также тип MIME не должен быть application/octet-stream. IIRC обычно определяется как application/x-msdos-program.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...