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