Skip to content

Файлы

Загрузка файлов и получение доступа к ним.

Загрузить файл

Request

Загружает файл в хранилище.

JSON-part metadata определяет назначение файла и связанные ограничения по типу, размеру и crop.

Ограничения входных данных:

  • файл обязателен и не может быть пустым
  • исходное имя файла должно быть непустым и не длиннее 255 символов
  • размер файла должен быть больше 0
  • для файлов с content-type, начинающимся на image/, максимальный размер составляет 20 MB
  • для остальных файлов максимальный размер составляет 100 MB
  • для AVATAR разрешены только image/png, image/jpeg, image/jpg, image/webp
  • для CARD разрешены только image/png, image/jpeg, image/jpg, image/webp
  • для BLOG разрешены только image/png, image/jpeg, image/jpg, image/webp
  • для CATEGORY разрешены только image/png, image/jpeg, image/jpg, image/webp
  • для AVATAR исходное изображение должно быть не меньше 300x300; crop обязателен, должен быть квадратным и не меньше 300x300
  • для CARD ширина и высота должны быть не меньше 900, а соотношение сторон не больше 3:1; квадратность не требуется, crop передавать нельзя
  • для BLOG ширина и высота должны быть не меньше 900, а соотношение сторон не больше 3:1; квадратность не требуется, crop передавать нельзя
  • для CATEGORY изображение должно быть квадратным и не меньше 300x300; crop передавать нельзя
  • для MESSAGE и VOICE crop передавать нельзя
  • изображения CARD после загрузки стандартизируются в image/webp с короткой стороной 900, без увеличения
  • изображения BLOG после загрузки стандартизируются в image/webp с короткой стороной 900, без увеличения
  • изображения CATEGORY после загрузки стандартизируются в image/webp и вписываются в 300x300
  • preview создаётся только для purpose, где на backend явно задан размер preview
  • сейчас preview создаётся для AVATAR в image/webp, вписанный в 150x150
  • сейчас preview создаётся для CARD в image/webp с короткой стороной 200
  • сейчас preview создаётся для MESSAGE image-файлов в image/webp, вписанный в 900x900
  • сейчас preview создаётся для BLOG в image/webp с короткой стороной 333

CARD используется для карточек мастера, сервиса и салона. BLOG используется для изображений постов. CATEGORY используется для изображений категорий.

Security
bearerAuth or jwtCookie
Bodymultipart/form-datarequired
filestring, (binary)required

Бинарный файл. Имя файла должно быть непустым и не длиннее 255 символов, размер - больше 0 и не более 100 MB.

metadataobject(FileUploadMetadataRequest)required

Метаданные multipart-запроса на загрузку файла.

Правила по crop зависят от purpose:

  • для AVATAR crop обязателен
  • для CARD, BLOG, CATEGORY, MESSAGE и VOICE crop запрещён
curl -i -X POST \
  https://felmee.com/api/file/upload \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@avatar.png;type=image/png' \
  -F 'metadata={"purpose":"AVATAR","crop":{"height":300,"width":300,"x":0,"y":0}};type=application/json'

Responses

Файл успешно загружен

Bodyapplication/json
codeErrorstring or nullrequired

Устаревший camelCase-alias поля error_code; при ошибке оба поля содержат одинаковое значение.

successbooleanrequired

Флаг успешного выполнения запроса

messagestringrequired

Человекочитаемое описание результата

error_codestring or null(ERROR_CODE)required

Код ошибки. Для успешных ответов всегда null.

Enum:"invalid_body""unauthorized""not_found""conflict""object_modified_by_another_thread""action_too_late""too_many_request""code_is_gone""forbidden""user_blocked"
dataobject or null(FileUploadData)required

Полезная нагрузка. Может быть объектом, массивом или null.

Response
{ "success": true, "message": "File upload successfully", "error_code": null, "data": { "file_id": "id" } }