2015-11-11 2 views
0

Я сохраняю файл в формате pdf, а затем пытаюсь загрузить его с помощью php. Сценарий, казалось, работал нормально, но внезапно его уже нет.PDF Download дает коррумпированный PDF php

Может ли кто-нибудь увидеть, чего у меня нет?

PS: файл, который я загружаю, всего 4.3kb большой, поэтому я предполагаю, что это будет потому, что он не загружается вообще. Фактический размер файла должен быть больше этого.

$pdf->output(ROOTDIR.'/modules/addons/statement_generator/reports/statement.pdf'); 
    if($action=='print'){ 
     $file_name = 'statement.pdf'; 
     $file_url = "http://".$_SERVER['SERVER_NAME']."/modules/addons/statement_generator/reports/" . $file_name; 
     header('Content-Type: application/pdf'); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-disposition: attachment; filename=\"".$file_name."\""); 
     readfile($file_url); 
     exit; 
    } 
+2

Код, который вы опубликовали, выглядит хорошо, поэтому проблема, вероятно, в другом месте. Возможно, какой-то случайный выход раньше, что-то ускользает и вызывает отправку заголовков. Применяются обычные вещи: во-первых: просмотрите файл журнала ошибок http-серверов. Затем просмотрите консоль браузеров и просмотрите запрос и ответьте на вкладке сети. Затем откройте загруженный файл с помощью простого текстового редактора, чтобы посмотреть, что внутри. – arkascha

+0

Какую библиотеку PDF вы используете? –

+0

Я использую FPDF @BenSwinburne – Marcel

ответ

1

$pdf->output() вызов будет уже отправить PDF клиенту. Файл не будет сохранен в вашей локальной папке (разве вы не проверили хотя бы это?), Потому что вам нужно передать «F» в качестве параметра snd.

После этого вы пытаетесь прочитать URL-адрес (!!!!), который не существует и который, возможно, возвращает красиво оформленный ответ 404 html. Два вопроса здесь:

  1. Почему вы используете http, когда у вас есть локальный путь, использовались некоторые строки выше? Используйте только локальный путь!
  2. Содержание возвращаемый URL является добавление к уже отправить PDF, который заканчивается в документе смешанной из PDF и HTML (404 ответа) -> испорчены PDF

Заключение: Используйте «F», как 2-й параметр и использовать тот же путь для записи и чтения, а не для сочетания локального пути и URL-адреса.