Проблема
Я только что перестроил наш сайт, на котором мы позволяем пользователям загружать файлы .pdf и .mp3.Я использую сценарий PHP для обработки процесса загрузки.Проблема заключается в том, что при загрузке файлов .pdf большую часть времени загрузка завершается успешно.Но в определенные моменты я не знаю почему, скачанный файл поврежден.Или, собственно, Adobe Reader говорит: «При открытии этого документа произошла ошибка. Файл поврежден и не может быть восстановлен».Если я открываю тот же поврежденный файл другим считывателем, он работает нормально.
Что я уже сделал
Я открыл как «хороший» файл, так и «поврежденный» файл с помощьюNotepad ++.Я обнаружил, что проблема в том, что поврежденный файл, вместо окончания %% EOF, после %% EOF еще больше.Похоже, что начало файла PDF было скопировано в конец файла.Я также проверил файл, хранящийся на сервере, и это хорошо.Итак, на данный момент, я думаю, что-то не так с PHP-скриптом, который обрабатывает загрузку.
Вот код:
<?php
$file =$_GET['file'];
if(file_exists($file)) {
$fileExtension = substr($file, -3);
if($fileExtension === "pdf"){
$filenameIndex = strpos($file, "pdf/") + 4;
$filename = basename($file);
}
elseif ($fileExtension === "mp3") {
$filenameIndex = strpos($file, "mp3/") + 4;
$filename = basename($file);
}
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.$filename.'"');
header('Content-length: '. filesize($file));
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
header('Content-Transfer-Encoding: chunked');
readfile($file);
print file_get_contents($file);
exit;
}
?>
Я использую один и тот же скрипт для загрузки файлов .pdf и .mp3.
Я НЕ эксперт в php.И я не совсем понимаю, как php обрабатывает загрузку, поэтому я был бы очень признателен, если бы кто-нибудь помог мне найти проблему.Заранее большое спасибо!