Перейти к содержимому
Account

Zip-архив

Упаковывает несколько ваших файлов в один ZIP-архив за один запрос. Для каждого файла можно задать свои параметры трансформации.

Эндпоинт получает каждый файл через обычный конвейер отдачи (применяя трансформации), стримит их в ZIP и возвращает как application/zip.

METHOD: POST
https://api.defaultuploader.com/v1/zip
# Content-Type: application/json
# Требуется заголовок — authorization: SECRET_CLIENT_TOKEN
JSON
{
"files": [
{ "type": "image", "path": "photo.jpg", "params": { "w": 200, "f": "webp" }, "name": "small.webp" },
{ "path": "subdir/cat.png" }
],
"archiveName": "export.zip"
}
ПолеОбязательноеОписание
filesдаМассив файлов для включения (1–100).
files[].pathдаПуть к файлу, как в URL отдачи после /v1/<type>/upload/<token>/. Поддерживаются подкаталоги.
files[].typeнетТип ресурса: image (по умолчанию), video, audio, text, application.
files[].paramsнетПараметры трансформации для этого файла — те же, что и параметры трансформации изображения/видео (например, w, h, f).
files[].nameнетИмя файла внутри архива. По умолчанию — path.
archiveNameнетИмя возвращаемого архива. По умолчанию — archive.zip.

Архив возвращается потоком с заголовками Content-Type: application/zip и Content-Disposition: attachment.

Файлы, которые не удалось получить (отсутствуют, ошибка и т.д.), пропускаются — они не приводят к падению всего запроса. В корне архива всегда лежит _manifest.json с результатом по каждому файлу:

_manifest.json
[
{ "path": "photo.jpg", "name": "small.webp", "status": "ok", "size": 18324 },
{ "path": "subdir/cat.png", "status": "error", "code": 404 }
]
  • До 100 файлов за запрос.
  • К этому эндпоинту применяется отдельный rate limit, так как один запрос разворачивается во множество внутренних обращений.
  • path валидируется: выход за пределы пути (..), инъекция query и абсолютные пути отклоняются с кодом 400.
bash
curl --location 'https://api.defaultuploader.com/v1/zip' --header 'Authorization: YOUR_SECRET_CLIENT_TOKEN' --header 'Content-Type: application/json' --data '{"files":[{"path":"photo.jpg","params":{"w":200}},{"path":"logo.png","name":"brand.png"}],"archiveName":"export.zip"}' --output export.zip