Скачал PDF - не могу открыть

Я разрешаю своим пользователям загружать PDF-файл, используя этот код:

$db->Record['file'] содержит относительный путь к документу.

Доступ к фиктивной странице, которая загружает PDF-файл, поэтому они фактически не видят «text.pdf» в URL-адресе. Я изменил заголовки файла, чтобы добиться этого:

$downloadfile = '/data/srv/www/vhosts/htdocs'.$db->Record['file'];
$filename = basename($downloadfile);        
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$filename.'"');        
readfile($downloadfile);

Загрузка проходит без проблем, но при попытке открыть выдает ошибку:

The PDF file could not be openend, the type is not supported or the file
was damaged.

Как я могу это исправить?

Не: Когда я загружаю файл напрямую, то есть доступ осуществляется через http://.../text.pdf и открываю его, все работает нормально.


person F.P    schedule 01.09.2010    source источник
comment
Что на самом деле содержит загруженный файл?   -  person Ignacio Vazquez-Abrams    schedule 01.09.2010
comment
Бьюсь об заклад, в файле есть сообщения об ошибках PHP.   -  person Pekka    schedule 01.09.2010
comment
Держу пари, что эти ошибки PHP возникают из-за того, что файл htdocstext.pdf не существует.   -  person Kevin Van Dyck    schedule 06.07.2018


Ответы (3)


(Скопировано из комментариев) Держу пари, в файле есть сообщения об ошибках PHP.

person Pekka    schedule 01.09.2010

Возможно, браузер не может определить длину ожидаемого чтения из файла. Из документации по php попробуйте добавить размер файла в заголовок:

header('Content-Length: ' . filesize($file));
person Joel Etherton    schedule 01.09.2010

Вы пропустили / после htdocs в первой строке?

person Kevin Van Dyck    schedule 27.02.2018