API · s5w

Раздача файлов

Файлы отдаются по трём адресам — в зависимости от того, кому и насколько долго их можно видеть.

Три канала

/o
Публичный

/o/{bucketId}/{id} — без авторизации, только для публичных файлов.

/p
По токену

/p/{id} — с токеном бакета, достаточно BASIC. Для любого файла.

Готовые адреса приходят в ответе на загрузку: publicUrl и privateUrl. Строятся они от PUBLIC_BASE_URL, если он задан.

bash
# публичный
curl -O https://s5.example.com/o/<bucketId>/<id>

# по токену
curl -O -H "Authorization: Bearer <токен>" https://s5.example.com/p/<id>

Скачать, а не открыть

Картинки, видео, аудио, PDF и простой текст по умолчанию открываются в браузере (inline), всё остальное — скачивается. SVG и HTML всегда скачиваются: показанные браузером, они могли бы выполнить скрипт от имени вашего домена.

Чтобы браузер сохранил и то, что умеет показать, добавьте ?download=1:

text
https://s5.example.com/o/<bucketId>/<id>?download=1

У временной ссылки это задаётся при выдаче — полем disposition.

Готово к CDN

Все три канала поддерживают:

  • Range — докачка и перемотка видео (206 Partial Content; за пределами файла — 416). Исключение — временная ссылка с лимитом скачиваний: она отдаёт файл только целиком;
  • ETag и условные запросы — If-None-Match отвечает 304, если файл не менялся;
  • Cache-Control — по политике кэша бакета и папки.

Трафик

Каждая отдача учитывается в статистике бакета: объём, приём и число запросов по дням. Счётчики сбрасываются в базу каждые 20 секунд.