У меня есть несколько файлов в папке. я использую следующий код 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);
прежде чем позвонить 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);
}
}
Для обслуживания 7 zip-файлов ваш тип контента должен быть
application/x-7z-compressed
Если вы обслуживаете как 7 почтовых & zip или rar файлы, то вы должны программно установить тип контента для браузера.