Класс PHP ZipArchive позволит мне создать zip-архив с методом open ():
mixed ZipArchive::open ( string $filename [, int $flags ] )
Затем я могу добавить файлы в этот архив, закрыть файл и загрузить его в веб-браузер пользователя, как обычно:
header ('Content-Type: application/zip');
header ('Content-Length: ' . filesize ($filename));
header ('Content-Disposition: attachment; filename="' . $filename . '"');
readfile ($filename);
unlink ($filename);
Мой вопрос: есть ли способ избежать создания файла на жестком диске сервера, загрузить его и затем стереть? То есть Можно ли использовать stdout в качестве целевого имени файла, передаваемого методу open (), и напрямую записывать содержимое архива в stdout? Что-то вроде:
ZipArchive::open ( STDOUT, ZipArchive::CREATE)
Или я застрял с необходимостью промежуточного файла на стороне сервера?
«ZipStream — это библиотека для динамической потоковой передачи динамических zip-файлов из PHP без записи на диск вообще
. Сервер «Ссылка: https://github.com/maennchen/ZipStream-PHP
Других решений пока нет …