PDF-загрузка с PHP --› ERR_CONTENT_LENGTH_MISMATCH

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

ERR_CONTENT_LENGTH_MISMATCH

Это моя функция загрузки:

if($_GET['funktion'] == 'downloadallgemein')
 {

        $filename = basename($dateiname);
        $path = '/kunden/261105_71522/webseiten/dev.delst/uploads/'.$filename.''; // the file made available for download via this PHP file
        if (file_exists($path)) {
                $mm_type="application/octet-stream"; // modify accordingly to the file type of $path, but in most cases no need to do so

                header("Pragma: public");
                header("Expires: 0");
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header("Cache-Control: public");
                header("Content-Description: File Transfer");
                header("Content-Type: " . $mm_type);
                header("Content-Length: " .(string)(filesize($path)) );
                header('Content-Disposition: attachment; filename="'.basename($path).'"');
                header("Content-Transfer-Encoding: binary\n");

                readfile($path); // outputs the content of the file

                exit();
        }

        else
        echo'Datei wurde nicht auf dem Server gefunden';
 }  

Если я удалю header("Content-Length: " .(string)(filesize($path)) ); загрузка будет работать, но файл PDF будет поврежден и не может быть открыт.

Путь правильный и файл находится на сервере. Так что загрузка работает..

Что я делаю неправильно?


person Codehan25    schedule 12.06.2017    source источник
comment
Почему вы вводите размер файла в строку? Также эта проблема может быть связана с настройками сервера. Возможно, на сервере установлено ограничение времени выполнения. Отключите его с помощью set_time_limit(0); (если это разрешено).   -  person Sehdev    schedule 12.06.2017
comment
Если я отключу ограничение по времени, у меня все равно будет такое же поведение. Если я удалю преобразование строки, у меня также будет такое же сообщение об ошибке.   -  person Codehan25    schedule 12.06.2017
comment
Попробуйте отправить файлы меньшего размера и проверьте, правильно ли они отправляются. Проверьте заголовки, которые отправляет сервер.   -  person Sehdev    schedule 12.06.2017


Ответы (1)


header('Content-Type: application/pdf');

header('Content-Disposition: вложение; имя_файла=' . basename($filename) . '');

заголовок («Длина содержимого: ' . Размер файла ($ имя файла));

прочитать файл ($ имя файла);

Я использовал эти заголовки для загрузки pdf в моем файле php.

person aenugula karthik    schedule 12.06.2017