Как вызвать загрузку PDF автоматически?

Там какой-либо путь состоит в том, чтобы вынудить менеджер загрузок пользователя запустить загрузку для.PDF вместо того, чтобы показать.PDF в новом окне/вкладке?

36
задан JJJ 16 August 2012 в 15:51
поделиться

4 ответа

Для этого вам необходимо отправить HTTP-заголовки ( Content-disposition ). Вы не можете этого сделать на стороне клиента.

4
ответ дан 27 November 2019 в 05:22
поделиться

Установите Content-Disposition в заголовке HttpResponse:

Content-Disposition = 'attachment; filename=filename.pdf'
31
ответ дан 27 November 2019 в 05:22
поделиться

Это нужно сделать на стороне сервера. Вы не можете этого сделать на стороне клиента.

Как это сделать, зависит от рассматриваемого языка на стороне сервера.

PHP:

header('Content-Disposition: attachment; filename="' . $filename . '"');

Java:

response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

.NET:

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

Если на стороне сервера нет средств для потоковой передачи файла PDF, вам необходимо настроить его на уровне веб-сервера. Например, в Apache HTTPD вы можете разместить / развернуть файл .htaccess в корне папки PDF со следующей записью:

<Files *.pdf>
    Header set Content-Disposition attachment
</Files>

или настроить его глобально в файле httpd.conf . Аналогичный подход существует для IIS с файлом web.config .

14
ответ дан 27 November 2019 в 05:22
поделиться
    <?php
    // required for IE, otherwise Content-disposition is ignored   
     if(ini_get('zlib.output_compression'))
      ini_set('zlib.output_compression', 'Off');
    }
$reader = fopen($filename, "r");
$contents = fread($reader, filesize($filename));
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($filename));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filename));
    ob_end_clean();
    echo $contents;
0
ответ дан 27 November 2019 в 05:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: