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

Я пытаюсь получить веб-сайт с кнопкой, которая заставляет загрузить PDF-файл.

Heres 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 », потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден (например, он был отправлен как вложение электронной почты и неправильно декодирован)».

Любая помощь будет принята с благодарностью.

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

"
Предупреждение : readfile (документы / ECM_IT_ResumeDownload.pdf) [function.readfile]: не удалось открыть поток: нет такого файла или каталога в html / scripts / download.php в строке 4
"

Однако документ определенно существует. в html / документы / ECM_IT_ResumeDownload.pdf

Вы пытались избавиться от закрывающего тега 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'); ,