2013-03-14 4 views
4

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

что я могу заверить вас, что код до получения данных из базы данных является идеальным.there нет ошибки или ошибки.После получения данных я использовал следующие заголовки, чтобы эхом, что file.i я не уверен об этих заголовках.

$mimetype = 'application/pdf'; 
$disposition = 'attachment'; 
header('Content-type: $mimetype'); 
header('Content-Disposition: inline; filename="$question"'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-length: ' . strlen($question)); 
header('Accept-Ranges: bytes'); 
echo "$question"; 

ПРИМЕЧАНИЕ: Я использовал расширение .pdf в контент-decomposition.but, который не был плодотворным me.also использовал функцию ReadFile(), и это также не полезно для меня. Может ли кто-нибудь сказать мне, что там не так?

+0

'$ содержат ли' вопроса имя файла или содержимое файла? Вы использовали его по-разному. –

+0

yes..it содержит файл –

+0

Заголовок может содержать не более одного заголовка, обнаружена новая строка. в –

ответ

6

Основная причина, по которой page is changing into gray colors заключается в том, что браузер не может правильно определить тип контента.

Попробуйте это:

header("Content-type: $mimetype"); 
header('Content-Disposition: inline; filename="'.$question.'"'); // Filename should be there, not the content 

Вместо:

header('Content-type: $mimetype'); 
header('Content-Disposition: inline; filename="$question"'); 

кажется, что у вас есть недопустимые кавычки, поэтому тип содержимого правильно не указано.

EDIT

Чтобы выяснить, давайте предположим, что $question двоичное содержимое PDF.
Это то, что ваш код должен быть:

header('Content-type: application/pdf'); 
header('Content-Disposition: inline; filename=anything.pdf'); 
header('Content-Transfer-Encoding: binary'); 
echo $question; 

ОШИБКИ ОБЪЯСНЕНИЕ

Давайте обсудим исходный код и ваши ошибки.

$mimetype = 'application/pdf'; 
$disposition = 'attachment'; 

// First error: you have single quotes here. So output is 'Content-type: $mimetype' instead of the 'Content-type: application/pdf' 
header('Content-type: $mimetype'); 

// Second error. Quotes again. Additionally, $question is CONTENT of your PDF, why is it here? 
header('Content-Disposition: inline; filename="$question"'); 


header('Content-Transfer-Encoding: binary'); 

// Also bad: strlen() for binary content? What for? 
header('Content-length: ' . strlen($question)); 


header('Accept-Ranges: bytes'); 
echo "$question"; 

ONE MORE EDIT

У меня есть еще один запрос ... я хочу, чтобы изменить имя файла в $ year.pdf .. $ год может иметь значения, как 2007..how может Я делаю это???

Попробуйте это:

$year = '2013'; // Assign value 
header('Content-Disposition: inline; filename='.$year.'.pdf'); 

Вместо:

header('Content-Disposition: inline; filename=anything.pdf'); 
+0

Теперь браузер не смог загрузить файл pdf –

+0

Убедитесь, что файл создан правильно, и нет выхода до и после кода, который вы нам показали. –

+0

Я использовал имя файла, но все еще не работал ... это уже 6 часов .. работа над ним –

Смежные вопросы