Загруженный файл доступен по ссылке определённого формата:
http(s)://[domain]/cdn/files/{file_id}/{filename}.{extension}
Описание формата ссылки. 1. HTTP схема Вы можете использовать протокол по своему усмотрению: http или https
2. domain Домен по умолчанию cdn.tinycdn.cloud. Вы можете использовать CNAME запись для использования своего домена. Чтобы это сделать, необходимо:
3. file_id Это целочисленный ID загруженного файла 4. filename Отображаемое имя файла, может быть любым для ЧПУ 5. extension Отображаемое расширение файла, может быть любым для ЧПУ
Заголовок Content-Type отдаётся на основе расширения файла при его загрузке
Ссылку на файл можно, а иногда и необходимо, дополнять query параметрами (передаются после ? в ссылке)
Доступные query параметры
1. token Этот параметр передаёт токен доступа к файлу, если файл доступен по токену.
Необходимость в нём определяется при загрузке файла. Он может быть загружен с флагом приватный - тогда без правильного токена сервер отдаст ошибку 403 (Forbidden)
Также, приватность файла может быть переопредела для его модификации, подробнее в разделе о правилах обработки контента.
2. format только для изображений Принудительно конвертирует формат изображения. Допустимые значения: png, gif, jpeg, webp, avif
3. download Передаёт браузеру заголовок Content-Disposition: attachment, что заставляет браузер скачивать файл, даже если он умеет отображать этот тип контента
4. width & height только для изображений Параметры задают необходимую ширину и высоту изображения соответственно.
Если указать width и height, то будет ресайз под указанные размеры. Если указать только один параметр, то второй будет рассчитан с сохранением пропорций
5. quality только для изображений Желаемый уровень качества при сжатии, 0 - минимальное, 100 - максимальное. Влияет на размер файла
При загрузке файла ему указывается группа. Для загрузки через виджет по умолчанию это public_upload
Группе можно назначать правила обработки.
Хранение модификаций файлов
Определение подходящей модификации
Первоначальная модификация (при загрузке файла)
Правильная настройка первоначальных модификаций поможет оптимизировать размер занимаемого места на диске и сделать дальнейшую работу с файлами более комфортной. Правила такой модификации обёрнуты в ключ first. Если будет найдено подходящее правило, в момент загрузки изображения оно будет изменено.
Поддерживаются следующие настройки:
Пример json кода для описания правилила, что загруженные файлы должны быть ограничены по размеру и переконвертированы в webp
{
"first": {
"max_width": 2000,
"max_height": 2000,
"format": "webp"
}
}
WaterMark в модификациях файлов
Пример json кода для описания вортемарка
"watermark": {
"id": 10,
"position": {
"orientation": "right/bottom",
"x": 10,
"y": "20%"
}
}
1. Ключ id - id файла на cdn с вотермарком. Должен быть типа image
2. Ключ position определяет смещение наложения вотермарка
3. Ключ orientation определяет откуда ведётся отсчёт. Может принимать следующие значения
Ключ x - дополнительное смещение по горизонтали. При ориентации left или center, смещение идёт влево. При ориентации right смещение идёт вправо
Ключ y - дополнительное смещение по вертикали. При ориентации top или center, смещение идёт вниз. При ориентации bottom смещение идёт вверх
Значения ключей x и y могут быть отрицательными. Указывается либо число (пикселей), либо строка вида "5%" - в процентах от размера исходного изображения. По умолчанию 0. Примеры значений: 10, -20, "5%"
Примеры обработки position, для картинки 200x200 и вотермарка 40x40
{
// отступ справа = 10px, снизу = 20% = 40px
"watermark": {
"id": 10,
"position": {
"orientation": "right/bottom",
"x": 10,
"y": "20%"
}
}
}
{
// отступ справа = 10px
// отступ сверху = (200 - 40) / 2 = 80px
"watermark": {
"id": 10,
"position": {
"orientation": "right/center",
"x": 10
}
}
}
{
// отступ слева = по центру и сдвиг на -10px = ((200 - 40) / 2) -10 = 70px
// отступ сверху = 0
"watermark": {
"id": 10,
"position": {
"orientation": "center/top",
"x": -10
}
}
}
CDN имеет GraphQL API. Каждый клиент может его использовать для автоматизации своей работы или по иным причинам.
Мы подготовили документацию и composer пакет.
Ошибки отдаются через коды состояния HTTP