Использование 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');
.