2010-08-16 3 views
1

Я реализовал сценарий загрузки с использованием заголовков PHP для загрузки PDF-файлов. Мой скрипт отлично работает и загружает соответствующий файл PDF также в моем локальном хосте, но этот скрипт не работает на моем сервере.Загрузка PDF-файла с использованием PHP становится поврежденной на сервере

Мой код:

header("Content-Disposition: attachment; filename='dfile.pdf'"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-type: application/pdf;"); 

readfile("http://www.education.gov.yk.ca/pdf/pdf-test.pdf"); 

В моем файле сервера браузера появляется тонкая и загрузка файла и как dfile.pdf, но если я пытаюсь открыть загруженный файл, то я получаю сообщение об ошибке в the file has been damaged , Любые настройки моего сервера, вызывающие эту проблему или что-то еще?

Любые предложения по устранению этой проблемы очень заметны.

Примечание: Я думаю, что это может быть проблемой с настройками моего сервера PHP. Может ли кто-нибудь сказать мне, нужна ли функции readfile для включения на моем сервере PHP?

Спасибо заранее, Шива ...

+0

Может быть несколько причин. Во-первых, найдите подсказки о том, как файл поврежден. Это нулевые байты? Вы видите ошибки или предупреждения в открытом тексте при открытии его в текстовом редакторе? и т. д. – zaf

+0

TMK, не относящийся к PHP5. http://php.net/manual/en/function.readfile.php http://php.net/ChangeLog-5.php – TheLQ

ответ

0

Эта проблема возникает из-за настроек моего сервера. Параметры PHP, параметр allow_url_fopen не включены на моем сервере. Я обрабатываю эту ситуацию, используя CURL, в любом случае спасибо за вашу поддержку.

3

Я думаю, PHP выводит некоторые предупреждения перед телом PDF файла. Проверь это.

+0

Я не могу открыть загруженный файл PDF. При открытии файла я просто получаю всплывающее окно с сообщением «Adobe Reader не может открыть« dfile.pdf », потому что это либо не поддерживаемый тип файла, либо потому, что файл поврежден. – Siva

+2

Вы можете открыть его в любом шестнадцатеричном или текстовом редакторе, чтобы увидеть, есть ли какие-либо вещи, отличные от PDF, в начале. –

+0

Да, он открывается текстовым редактором (текстовая панель и текстовая панель), ничего не появляется. Загруженный файл имеет размер «0 КБ» без данных. – Siva

0

Попробуйте использовать этот код:

$file = 'monkey.pdf'; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/pdf'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit; 
} 
Смежные вопросы