Intereting Posts
Лучший способ реализовать интерфейс Calendar с помощью Google Cal для событий? Как вернуть правильное сообщение об ошибке / ошибке для JQuery .ajax () с помощью PHP? Как конвертировать дату из dd-mm-yy в mm-dd-yy Ошибка сеанса после перезагрузки страницы Как использовать Rest API с помощью Zend Framework 2 Разрешенный размер памяти 67108864 байт исчерпан (пытался выделить 4459414 байт) при написании файла xml Невозможно заставить PHP PDT xDebug остановиться на контрольных точках в Eclipse строка определения типа не соответствует числу переменных связывания PHP Youtube API v3 – Прямая загрузка – Несанкционированное сообщение обратный отсчет времени в javascript и php Bootstrap 3 Modal с использованием данных набора записей PHP Как ЗАКАЗАТЬ СЛУЧАЙ в Doctrine2 (Symfony2) Почему браузер пытается загрузить файл сценария php? Как переопределить функцию признака и вызвать ее из переопределенной функции? Чтение значения из URL-адреса в PHP

Php-код для загрузки pdf-файла с сервера не работает

Я написал код для загрузки pdf-файла с сервера, но код не работает, и я даже не вижу ошибок. Это код, который я использую.

// place this code inside a php file and call it fe "download.php" $path = $_SERVER['DOCUMENT_ROOT']."/product_images/"; // change the path to fit your websites document structure fullPath = $path.$_REQUEST['download_file']; if ($fd = fopen ($fullPath, "r")) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "pdf": header("Content-type: application/pdf"); // add here more headers for diff. extensions header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download break; default; header("Content-type: application/octet-stream"); header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); } header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly while(!feof($fd)) { $buffer = fread($fd, 2048); echo $buffer; } } fclose ($fd); exit; // example: place this kind of link into the document where the file download is offered: // <a href="download.php?download_file=some_file.pdf">Download here</a> ?> 

Я извлекаю файл из базы данных, и это моя ссылка для загрузки, которую я использую на своем сайте

 <div style="padding-left:320px; padding-top:5px;"><a href="<?php echo URL ?>download.php?download_file=<?php echo $prod_details['specification_pdf']?>"> <img src="<?php echo URL ?>images/download_pdf.png" /></a></div> </div> 

Может ли кто-нибудь помочь мне в решении этой проблемы?

Как говорят, @lasar missing $ в строке 2 может быть проблемой. Я адаптирую (и проверяю) ваш код, чтобы быть более безопасным (см. Basename) и direct (см. Readfile):

 <?php $path = $_SERVER['DOCUMENT_ROOT']."/product_images/"; // change the path to fit your websites document structure $fullPath = $path.basename($_REQUEST['download_file']); if (is_readable ($fullPath)) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "pdf": header("Content-type: application/pdf"); // add here more headers for diff. extensions header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download break; default; header("Content-type: application/octet-stream"); header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); } header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly readfile($fullPath); exit; } else { die("Invalid request"); } // example: place this kind of link into the document where the file download is offered: // <a href="download.php?download_file=some_file.pdf">Download here</a> 

ДОБАВИТЬ

  • см. страницу руководства по чтению для хорошего объяснения заголовков для загрузки файлов.
  • ЗАПОМНИТЕ из-за своей природы. PHP хорошо знает, чтобы повредить загрузку бинарного файла, помните, чтобы поддерживать <? Php всегда в 1-й строке и избегать тега close ?> В файлах PHP-only