Denisov80
@Denisov80
Юный Программист

Добавить файлы в zip архив, и отдать клиенту?

Подскажите как на лету (stream?) добавить файлы (директория с файлами) в zip архив, и отдать клиенту, не сохраняя временный файл архива, и если придёт запрос от другого клиента одновременно, это будет работать?
Для разных клиентов требуется добавлять разные файлы (у каждого клиента своя дир-я).
Если с разных ip запрашивается один скрипт, я понимаю что он не будет ожидать завершения первого?
  • Вопрос задан
  • 989 просмотров
Решения вопроса 1
myks92
@myks92 Куратор тега PHP
Нашёл решение — пометь вопрос ответом!
Вы в любом случае создаёте архив, отдаёте на скачивание клиенту и сразу удаляете. Собрать архив на лету и отдать на скачивание не получится.

Создать архив можно как-то так.
$zip = new ZipArchive();
    if ($zip->open($file, ZipArchive::CREATE) !== TRUE) {
        throw new \Exception('Cannot create a zip file');
    }

    foreach($files as $file){
        $zip->addFile($file[file_name], $file[local_name]);
    }

    $zip->close();


Затем отдаёте на скачивание клиенту. Далее вызываете функцию unlink, чтобы удалить временный zip.

IP тут вообще не причём. Вы работаете с обычными файлами. Генерируете уникальное название. Можно использовать time() и проблем не будет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
Укажите дефис в качестве имени файла, и архив будет создаваться в stdout
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы