Я создавал файл, загружающий класс для моей CMS в PHP, в то время, когда я заметил, что он выводит файлы в другом формате кодирования. Я пробовал с readfile, file_get_contents, fread, но все, похоже, делают то же самое. Это похоже на то, что связано с выходной буферизацией.
Пример файла изображения в формате png, который я загрузил с помощью script, похоже, работает после изменения кодировки с помощью блокнота ++ от UTF до ASCII
Это шаги, которые я сделал до сих пор:
$mime = http::get_file_mime();
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Transfer-Encoding: binary');
header('Transfer-Encoding: binary');
header('Content-Description: File Transfer');
header('Content-Encoding: chunked');
header('Connection: closed');
@readfile($this->file);
Я сделал fread:
$file = fopen($this->file,'r');
$read = fread($file,filesize($this->file));
print($read);
Я сделал file_get_contents();
$read = file_get_contents($this->file);
print($read);
Все эти шаги отправляют файл в диалоговое окно загрузки. Но он не выводит файл так, как есть. И это влияет на любой файл, который я пытаюсь загрузить с помощью script.
Что я делаю неправильно?