|
|
|
| Здравствуйте. Как сделать так, чтобы pdf-файл скачивался, а не открывался в браузере? Полазал по темам на этом форуме, получился такой код, но файл все равно открывается:
<?php
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=1261916051_7456.pdf");
header("Location: 1261916051_7456.pdf");
?>
|
Скачиваться он будет, если третьей строчкой написать так:
<?php print file_get_contents("1261916051_7456.pdf"); ?>
|
Однако этот вариант нам не подходит. | |
|
|
|
|
|
|
|
для: antf
(28.12.2009 в 15:59)
| | Почему? | |
|
|
|
|
|
|
|
для: Loki
(28.12.2009 в 16:39)
| | Большие pdf-файлы 30-200 мб. Несколько тысяч посетителей в день, правда будет выделенный сервер. | |
|
|
|
|
|
|
|
для: antf
(28.12.2009 в 16:55)
| | Так настройте чтобы заголовки отдавал сервер а не php | |
|
|
|
|
|
|
|
для: antf
(28.12.2009 в 15:59)
| | Это ещё от браузера зависит и от установок Acrobat Reader - у многих плагин в браузер встраивается, поэтому такое поведение с сервера уже не отменить - это забота пользователя. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2009 в 20:11)
| | Как правило, это тоже решается заголовками. Броузер можно заставить даже html сохранять как файл. | |
|
|
|
|
|
|
|
для: Loki
(29.12.2009 в 20:28)
| | Ну можно, да, попроовать... Например, следующие HTTP-заголовки
<?php
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=1261916051_7456.pdf");
header("Location: 1261916051_7456.pdf");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(29.12.2009 в 23:03)
| | К сожалению, не работает. | |
|
|
|
|
|
|
|
для: antf
(30.08.2010 в 15:02)
| |
if (file_exists($tmp_name)) {
header('Content-Description: File Transfer');
header('Content-Type: application/x-zip-compressed');
header('Content-Disposition: attachment; filename='.basename($tmp_name));
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($tmp_name));
ob_clean();
flush();
readfile($tmp_name);
die;
}
|
у меня сработало вот это. $tmp_name - это любой файл (jpg, zip, pdf, doc) | |
|
|
|
|
|
|
|
для: antf
(28.12.2009 в 15:59)
| | А если заменить на <?php readfile("1261916051_7456.pdf"); ?> | |
|
|
|
|
|
|
|
для: Саня
(30.08.2010 в 15:43)
| | А есть разница? | |
|
|
|
|
|
|
|
для: mihdan
(01.09.2010 в 00:16)
| | Есть. Файл не размещается в оперативке целиком перед передачей. | |
|
|
|