Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать так, чтобы pdf-файл скачивался, а не открывался в браузере?
 
 автор: antf   (28.12.2009 в 15:59)   письмо автору
 
 

Здравствуйте. Как сделать так, чтобы 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"); ?>


Однако этот вариант нам не подходит.

  Ответить  
 
 автор: Loki   (28.12.2009 в 16:39)   письмо автору
 
   для: antf   (28.12.2009 в 15:59)
 

Почему?

  Ответить  
 
 автор: antf   (28.12.2009 в 16:55)   письмо автору
 
   для: Loki   (28.12.2009 в 16:39)
 

Большие pdf-файлы 30-200 мб. Несколько тысяч посетителей в день, правда будет выделенный сервер.

  Ответить  
 
 автор: Loki   (28.12.2009 в 16:58)   письмо автору
 
   для: antf   (28.12.2009 в 16:55)
 

Так настройте чтобы заголовки отдавал сервер а не php

  Ответить  
 
 автор: cheops   (29.12.2009 в 20:11)   письмо автору
 
   для: antf   (28.12.2009 в 15:59)
 

Это ещё от браузера зависит и от установок Acrobat Reader - у многих плагин в браузер встраивается, поэтому такое поведение с сервера уже не отменить - это забота пользователя.

  Ответить  
 
 автор: Loki   (29.12.2009 в 20:28)   письмо автору
 
   для: cheops   (29.12.2009 в 20:11)
 

Как правило, это тоже решается заголовками. Броузер можно заставить даже html сохранять как файл.

  Ответить  
 
 автор: cheops   (29.12.2009 в 23:03)   письмо автору
 
   для: 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"); 
?>

  Ответить  
 
 автор: antf   (30.08.2010 в 15:02)   письмо автору
 
   для: cheops   (29.12.2009 в 23:03)
 

К сожалению, не работает.

  Ответить  
 
 автор: elenaki   (30.08.2010 в 15:52)   письмо автору
 
   для: 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)

  Ответить  
 
 автор: Саня   (30.08.2010 в 15:43)   письмо автору
 
   для: antf   (28.12.2009 в 15:59)
 

А если заменить на <?php readfile("1261916051_7456.pdf"); ?>

  Ответить  
 
 автор: mihdan   (01.09.2010 в 00:16)   письмо автору
 
   для: Саня   (30.08.2010 в 15:43)
 

А есть разница?

  Ответить  
 
 автор: Саня   (01.09.2010 в 07:32)   письмо автору
 
   для: mihdan   (01.09.2010 в 00:16)
 

Есть. Файл не размещается в оперативке целиком перед передачей.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования