У меня проблема, которая много раз поднималась на SO, но я не могу найти решение для моего! Я пытаюсь доставить PDF-файл клиенту, не открывая его в браузере, загрузка файла, но он поврежден, когда я его открываю, и не хватает нескольких байтов из исходного файла. Я попробовал несколько таких методов для загрузки файла, но я просто покажу вам последнее, что я использовал, и надеюсь получить обратную связь.Force Загрузка файла в формате PDF, поврежденный файл
Я также открыл загруженный PDF-файл в текстовом редакторе, и на его вершине нет ошибок php, которые я вижу!
Я также знаю, что readfile() выполняется намного быстрее, но для тестирования я отчаянно хочу получить что-либо, чтобы использовать метод while (! Feof())!
достаточно хаотичный Во всяком случае, Херес-код (взято из why my downloaded file is alwayes damaged or corrupted?):
$file = __DIR__ . '/reports/somepdf.pdf';
$basename = basename($file);
$length = sprintf("%u", filesize($file));
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . $basename . '"');
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $length);
ob_clean();
set_time_limit(0);
readfile($file);
отметить также была разница в размере файла:
Original: 351,873 bytes
Downloaded: 329,163 bytes
Пробовали ли вы 'ReadFile()'? – barbashov
@ DavidC799: Если вы хотите обсудить ответ на предыдущие вопросы, пожалуйста, оставьте там комментарий. Не просто введите здесь какой-то код и скажите нам, что «это не работает». Имейте в виду, только кто-то другой принимал этот ответ, это не должно означать, что код должен работать и на вас. И для целей тестирования, пожалуйста, уменьшите код до минимума, чтобы спровоцировать проблему. Например. нет функции, просто жестко заданное имя файла. Используйте readfile. – hakre
@barbashov Да, я пробовал несколько разных методов. – DavidC799