linux — передача файла заголовка php повреждена

У меня есть несколько файлов в папке. я использую следующий код php для передачи файла в браузер (с заголовками).

Я загружаю правильную длину файла в формате .7z, но я не могу разархивировать его.
если я передаю тот же файл с помощью ftp, я могу распаковать его без проблем.
С моего сервера я могу распаковать его без проблем. так что ошибка где-то в php

    private function pushToBrowser($file){
if(!$file){ // file does not exist
die('file not found');
} else {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");
header("Content-length: ".filesize($file).";\n");

// read the file from disk
readfile($file);
}
}

использование кода

$this->pushToBrowser($path);

1

Решение

прежде чем позвонить readfile($path) сделать ob_clean(); & flush();

наконец, ваш код должен выглядеть так:

private function pushToBrowser($file){
if(!$file){ // file does not exist
die('file not found');
} else {
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/x-7z-compressed");
header("Content-Transfer-Encoding: binary");
header("Content-length: ".filesize($file).";\n");
ob_clean();
flush();
// read the file from disk
readfile($file);
}
}
1

Другие решения

Для обслуживания 7 zip-файлов ваш тип контента должен быть
application/x-7z-compressed

Если вы обслуживаете как 7 почтовых & zip или rar файлы, то вы должны программно установить тип контента для браузера.

0

По вопросам рекламы [email protected]