Не используйте .zip-файлы!

.zip устарел. Используйте папки!

Почему?

Почему .zip — это прошлый век?

Битые файлы

Сколько раз вы скачивали важный и большой архив, чтобы после скачивания получить ошибку о невозможности открыть архив, или несовпадение CRC? ZIP-алгоритмы чувствительны к малейшей потере пакетов при передаче. Тем временем папка скачивается потоково — если файл повредился, вы теряете только один файл, а не все содержимое папки.

Лишнее время и ресурсы

Зачем мы упаковываем данные на сервере (тратя его ресурсы), скачиваем их, а потом распаковываем на клиенте (третя ресурсы уже ПК)? Современные скорости интернета давно сделали сжатие файлов бессмысленным. Вы просто делаете двойную работу.

Проблемы с безопасностью

Архивы — идеальный контейнер для скрытого вредоносного ПО. Антивирусам тяжело сканировать глубоко вложенные запароленные ZIP-файлы в реальном времени. Открытая директория проверяется системой мгновенно при загрузке.

И что же делать? Используйте атрибут download!

Популярные браузерные движки, такие как Chromium и Gecko, давно внедрили возможность загрузки папок. Чтобы заставить браузер скачать директорию без архивации, достаточно правильно использовать старый добрый HTML-атрибут download в связке с правильным MIME-типом на сервере.

<a href="./path_to_folder" download>Download folder</a>
Попробовать

Если сервер отдает заголовок Content-Type: inode/directory, а у ссылки стоит атрибут download, браузер автоматически создаст папку с тем именем, которые мы указали в href или download, в папке "Загрузки" и инициирует потоковую загрузку файлов в эту самую папку. Никаких плагинов. Чистый HTML5.