Я настроил загрузку файлов, но в некоторых случаях файлы не могут быть загружены.
Поскольку file_exist не соответствует действительности, код php умирает и возвращает мне определенное сообщение об ошибке.
Почему загрузка работает нормально с запятая ИЛИ ЖЕ пространство в каталоге,
но терпит неудачу с И ТО И ДРУГОЕ запятая с последующим пространство?
Файл с ошибкой загрузки:
$the_download = "/share/Multimedia/Library1/John, Doe/test/cover.jpg";
Файлы, которые скачивают нормально:
$the_download = "/share/Multimedia/Library1/John,Doe/test/cover.jpg";
$the_download = "/share/Multimedia/Library1/John Doe/test/cover.jpg";
код:
$the_filename = "somefilename.jpg";
if (file_exists($the_download)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($the_filename));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($the_download));
flush();
readfile($the_download);
exit;
}
else die("File not found<br>" . $the_download);
Вы должны заключить имя файла в заголовок в двойные кавычки:
header('Content-Disposition: attachment; filename="'.basename($the_filename).'");
Других решений пока нет …