Я использую скрипт ниже из этого поста ЛАМПА: Как создать .Zip больших файлов для пользователя на лету, без перегрузки диска / процессора
header('Content-Type: application/octet-stream');
header('Content-disposition: attachment; filename="file.zip"');
// use popen to execute a unix command pipeline
// and grab the stdout as a php stream
// (you can use proc_open instead if you need to
// control the input of the pipeline too)
//
$fp = popen('zip -r - tmp/01-55-34_561764e6cb06e', 'r');
// pick a bufsize that makes you happy (8192 has been suggested).
$bufsize = 8192;
$buff = '';
while( !feof($fp) ) {
$buff = fread($fp, $bufsize);
echo $buff;
}
pclose($fp);
У меня есть мои файлы в папке: tmp / 01-55-34_561764e6cb06e
Я получаю рабочий zip-файл, но проблема в том, что я также получаю путь, включенный в мой zip-файл.
Мой zipfile выглядит так, когда я его открываю
tmp/01-55-34_561764e6cb06e/image1.jpg
tmp/01-55-34_561764e6cb06e/image2.jpg
tmp/01-55-34_561764e6cb06e/image3.jpg
tmp/01-55-34_561764e6cb06e/image4.jpg
Я просто хочу иметь изображения, без папок (tmp / …).
Файловая структура
/var/www/html/script.php
/var/www/html/tmp/01-55-34_561764e6cb06e/image1.jpg
/var/www/html/tmp/01-55-34_561764e6cb06e/image2.jpg
/var/www/html/tmp/01-55-34_561764e6cb06e/image3.jpg
Я не хочу, чтобы мой сценарий находился в той же папке, что и изображения!
Найденный
-J
—бросовый-путь
Храните только имя сохраненного файла (ненужный путь) и не
хранить имена каталогов. По умолчанию zip будет хранить полный путь
(относительно текущего каталога).
Других решений пока нет …