Использование php для принудительной загрузки pdf

Im пытается получить веб-сайт, чтобы иметь кнопку, которая заставляет загрузку pdf.

вот html кнопки:

    <a href=scripts/download.php>
    <input type="image" src="images/download.gif" alt="Submit button"/>
    </a>

и php-скрипт до сих пор:

    <?php
    header('Content-Type: application/pdf');
    header('Content-disposition: attachment;filename=documents/ECM_IT_ResumeDownload.pdf');
    readfile('documents/ECM_IT_ResumeDownload.pdf');
    ?>

это, кажется, скачать файл нормально, но когда я иду, чтобы открыть его, я получаю эту ошибку:

"Adobe Reader не удалось открыть" documents_ECM_IT_ResumeDownload.pdf', потому что это либо не поддерживаемый тип файла, либо файл был поврежден (например, он был отправлен как вложения электронной почты и не правильно расшифровал)."

любая помощь была бы весьма признательна.

редактировать Открыл pdf в текстовом редакторе и получил такое сообщение:

"
предупреждение: readfile (documents / ECM_IT_ResumeDownload.pdf) [функция.readfile]: не удалось открыть поток: нет такого файла или каталога в html / скрипты / скачать.в PHP on line 4
"

документ определенно есть. в html / documents / ECM_IT_ResumeDownload.формат PDF

5 ответов


вы пытались избавиться от закрывающего тега PHP (?>) в конце? Он будет рассматривать страницу как чистую страницу PHP, удаляя любые возможные новые строки, которые могут случайно добавляться к концу вывода. Это помогло мне, когда я динамически создавал файлы excel для загрузки, и они загружались как поврежденные. Проверьте эту страницу для получения дополнительной информации:

http://www.php.net/manual/en/language.basic-syntax.phptags.php

из своего отредактированный вопрос, похоже, PHP не может найти файл. Попробуйте использовать абсолютный путь к файлу следующим образом: "c:\blah\de\blah\bloo - ... pdf " или "c:/blah/de/blah/bloo - ... документ PDF." Если один из этих путей работает и загружается правильно, ваш относительный путь в некотором роде неверен.


$file_url = www.example.com/pdffolder/$pdfname;
header('Content-Type: application/pdf');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=".$pdfname);
readfile($file_url);

Попробуйте удалить путь к файлу и оставить только имя файла в содержание:

header('Content-Type: application/pdf');
header('Content-disposition: attachment; filename=ECM_IT_ResumeDownload.pdf');

Я всегда использую скрипт загрузки Gowon Patterson, он также имеет защиту hotlink: http://by.gowondesigns.com/getfile/


кстати, немного поздно, но чтобы правильно определить проблему здесь:

скачать скрипт на scripts/download.php и файл, который вы хотите скачать, находится на documents/[...].pdf.

таким образом, ваша readfile() функция должна проходить в родительский каталог (вне scripts/), например,readfile('../documents/[...].pdf');.