Упаковка файлов в ZIP
Упаковка нескольких файлов в ZIP-архив с поддержкой перетаскивания, обработка в браузере
Перетащите файлы сюда или нажмите для выбора
Поддерживаются все типы файлов, можно загрузить несколько файлов
Что такое ZIP-сжатие?
Упаковка ZIP объединяет выбранные файлы в один загружаемый архив и часто упрощает передачу или хранение. Она полезна, когда нужно отправить несколько отдельных файлов, подготовить пакет для передачи, собрать скриншоты, приложить документы к письму или сделать небольшую резервную копию. ZIP является форматом без потерь: после распаковки файлы должны восстановиться точно. Однако уже сжатые форматы вроде JPG, PNG, MP4 и PDF могут почти не уменьшиться. Этот браузерный инструмент создает архив локально, поэтому выбранные файлы не нужно загружать на сервер. Он подходит для умеренных наборов файлов; очень большие файлы могут потреблять много памяти. ZIP не является шифрованием, поэтому конфиденциальным файлам нужна дополнительная защита.
Инструкция по использованию
Инструкция по использованию
- Перетащите файлы в область загрузки или нажмите кнопку «Выбрать файлы» для добавления
- Просмотрите список файлов и при необходимости удалите лишние
- Введите имя ZIP-файла (необязательно)
- Нажмите кнопку «Создать ZIP-архив», чтобы скачать сжатый файл
Примечания к архиву
- Перед созданием архива проверьте имена файлов и структуру папок: ZIP сохраняет пути и может раскрыть нежелательные имена.
- Для долгосрочного хранения или обмена с другими системами избегайте неподдерживаемых символов в именах файлов.
Применение
Технический принцип
Контейнер ZIP определяется спецификацией PKWARE APPNOTE (текущая ревизия 6.3.10). Файл `.zip` — это последовательность трёх типов записей: каждому хранимому файлу предшествует Local File Header с 4-байтовой сигнатурой `0x04034b50` (PK\x03\x04), за которым следуют сжатые данные; после последнего файла идёт Central Directory — таблица File Headers (сигнатура `0x02014b50`), которая перечисляет каждую запись с именем, размерами, CRC-32 и смещением обратно к локальному заголовку; наконец, запись End of Central Directory (сигнатура `0x06054b50`) находится в самом конце файла и указывает на начало центрального каталога. Читатели разбирают `.zip` с конца: сканируют назад от хвоста файла в поисках сигнатуры EOCD, переходят к центральному каталогу, затем переходят к каждому локальному заголовку — поэтому ZIP поддерживает потоковое добавление и быстрый произвольный доступ к одной записи без чтения всего архива. Этот инструмент использует библиотеку JSZip (с fflate в качестве более быстрой альтернативы) для сборки архива в браузере. Каждый объект `File`, выбранный пользователем, читается как `ArrayBuffer`, добавляется через `zip.file(name, buffer)`, затем `zip.generateAsync({ type: 'blob', compression: 'DEFLATE', compressionOptions: { level: 6 } })` создаёт `Blob`, который предоставляется пользователю для скачивания через `URL.createObjectURL()`. DEFLATE — стандартный метод сжатия ZIP, определённый в RFC 1951; он сочетает скользящее окно LZ77 для словарного поиска с кодированием Хаффмана. Уровень сжатия 6 (по умолчанию) — это точка баланса: уровень 1 примерно в 4 раза быстрее, но на 5-15% больше, тогда как уровень 9 в 2-3 раза медленнее уровня 6 при дополнительном сжатии всего на 1-2%. Целостность обеспечивается CRC-32, вычисляемым для каждого файла с полиномом IEEE 802.3 `0xEDB88320` (реверсированным), и сохраняемым как в локальном заголовке файла, так и в записи центрального каталога. Имена файлов записываются в UTF-8, когда установлен бит 11 общего назначения (обязательно с APPNOTE 6.3.0, 2006); без этого флага старые инструменты используют локальную OEM-кодовую страницу (CP437 в DOS, CP936/GBK в китайской Windows) и не-ASCII имена отображаются как «кракозябры». Классический формат ZIP использует 32-битные поля для размеров и смещений, ограничивая одну запись и общий архив примерно 4 ГБ (2^32 − 1 = 4 294 967 295 байт); ZIP64, определённый в APPNOTE 4.5+, расширяет их до 64 бит через дополнительные поля, но сборка JSZip в памяти ограничивает практический размер архива несколькими сотнями МБ до исчерпания памяти вкладки.
- Структура файла ZIP (PKWARE APPNOTE 6.3.10): Local File Headers (`0x04034b50`) + данные файла, затем Central Directory (`0x02014b50`), завершается EOCD (`0x06054b50`).
- Читатели разбирают с хвоста: сканируют назад в поисках сигнатуры EOCD, затем переходят к центральному каталогу — это обеспечивает быстрое извлечение одного файла без потоковой передачи всего архива.
- Сжатие DEFLATE (RFC 1951) = скользящее окно LZ77 + кодирование Хаффмана; уровень 6 — баланс по умолчанию, уровень 9 даёт ~1-2% при замедлении в 2-3 раза.
- Целостность: CRC-32 с полиномом `0xEDB88320` (реверсированный IEEE 802.3), сохраняется в локальном заголовке и центральном каталоге; проверяется при извлечении.
- Имена файлов в UTF-8 требуют бит 11 общего назначения (APPNOTE 6.3.0, 2006); без него старые инструменты используют CP437 / локальную OEM-страницу и отображают не-ASCII имена как «кракозябры».
- Классический ZIP ограничивает размеры 2^32 − 1 = 4 294 967 295 байт на файл и на архив; дополнительные поля ZIP64 (APPNOTE 4.5+) расширяют до 64 бит для больших объёмов.
- Браузерная реализация: JSZip / fflate читают каждый `File` через `arrayBuffer()`, строят архив в памяти и отдают как `Blob` для скачивания — без загрузки на сервер.
Примеры
Упаковка файлов проекта
Входы: src/, package.json, README.md (десятки файлов)
Выход: project-2026-06-11.zip (один архив, сжатие deflate)
Применение: поделиться снимком с коллегой или приложить к релизуПередача нескольких файлов (снижение накладных расходов)
Входы: 100 маленьких изображений, по 5-50 KB каждое (≈ 3 MB суммарно)
Выход: photos.zip (один файл, один HTTP-запрос, без накладных расходов на каждый файл)
Применение: при загрузке множества мелких файлов в email или хранилище с тарификацией за файлОрганизация документов
Входы: invoice.pdf, contract.docx, signed-acknowledgement.png
Выход: documents-2026Q2.zip
Применение: объединение налоговых, юридических или HR-записей в датированный архив для политик храненияЧасто задаваемые вопросы
Загружаются ли мои данные на сервер для создания ZIP?
Нет. ZIP-файл создаётся в вашем браузере с помощью JSZip. Исходные файлы читаются через FileReader API, сжимаются локально и предлагаются для скачивания. Сеть не задействуется.
Какой уровень сжатия используется?
По умолчанию DEFLATE уровня 6 — баланс скорости и размера, как в большинстве ZIP-инструментов. Чисто текстовое содержимое (логи, JSON, исходный код) сжимается хорошо; уже сжатое содержимое (JPEG, MP4, ZIP) почти не уменьшается.
Можно ли поставить пароль?
JSZip не поддерживает шифрование записей в ZIP. Если сборка предлагает защиту паролем, обычно она использует ZipCrypto, который давно считается небезопасным и взломан десятилетия назад. Для настоящей защиты паролем используйте 7-Zip на десктопе с AES-256.
Каков предел по числу и размеру файлов?
Практический предел — память браузера. На большинстве десктопов работает несколько сотен мегабайт. Мобильные браузеры жёстче. Для очень больших архивов используйте десктопные инструменты (7-Zip, WinRAR, командный zip) — они стримят данные с диска, а не держат всё в оперативной памяти.
Сохраняется ли структура папок?
Да. Перетащите папку из файловой системы, и относительные пути сохранятся внутри ZIP. Страница может показать дерево, чтобы вы сверили структуру до создания архива.
Откроется ли ZIP корректно в Windows, macOS и Linux?
Да. JSZip создаёт стандартные ZIP-файлы. Имена файлов в UTF-8 работают везде, где есть современная ОС; очень старые версии Windows могут показывать китайские или японские имена как кракозябры, если принудительно используется кодовая страница не UTF-8. Современные macOS и Linux всегда корректно работают с UTF-8.
В чём разница между ZIP и 7Z?
ZIP использует сжатие DEFLATE и читается на любой ОС без дополнительного ПО. 7Z использует LZMA/LZMA2 и даёт заметно лучшее сжатие текста, но для распаковки нужен 7-Zip или совместимая программа. Эта страница создаёт только ZIP.