Шаг 1 – получение URL для загрузки Момента

Для этого используется метод moments.getUploadUrl. У метода есть несколько настроек, подробнее о которых можно прочитать в его описании.

Так как загрузка производится для определенного пользователя, то понадобится либо access_token, либо session_key, а также разрешение PHOTO_CONTENT от пользователя.

После выполнения запроса к API получаем ответ, в котором указаны будущий идентификатор (свойство photo_ids), url для загрузки upload_url, время до которого необходимо завершить загрузку expires_ms (ttl_ms).

Пример ответа:

{
    "photo_ids": [
        "GuL9zIvR8Ymnw+lmctJOOnoaHD7dyUklrJpUOuu/UHNvZcxn3GDN4g=="
    ],
    "upload_url": "https://itest7.mycdn.me/uploadImage?apiToken=…&photoIds=GuL9zIvR8Ymnw%2BlmctJOOnoaHD7dyUklrJpUOuu%2UHNAvZcxn3GDN4g%3D%3D",
    "expires_ms": 1618928701461,
    "ttl_ms": 86399988
}

Выполнив этот метод, можно перейти к следующему.

Шаг 2 – загрузка фотографий через HTTP POST

Непосредственная загрузка фотографий производится на upload_url из первого шага.

Следующий фрагмент HTML-кода можно использовать для добавления изображения:

<form method="POST" enctype="multipart/form-data" action="%UPLOAD_URL%">
  <input type="file" name="pic1" accept="image/*" />
  <input type="submit" />
</form>

Ответ

Ответ содержит набор идентификаторов фотографий, для каждого из которых предоставляется токен, необходимый для последующего добавления загруженного медиа как Момента.

Пример ответа:

{
    "photos": {
        "GuL9zIvR8Ypvg+lmctJOOnobHD7dyUklrJpUOuu/SIAvZcxn3GIN4g\u003d\u003d": {
            "token": "dENkE0HFMl2yxJ3hWfFC15rgPh1iVhqppHF9CRzf2XqSiSCrkWSXZOw55GdUJ2BCqh2rjsJUdgpiGgWvFvKm+AD0XGUS9Mqo8fZeSIGylYy1TeSoUKJGIxLdgmYvP8kh"
        }
    }
}

Примечание

Метод всегда отправляет ответ в формате JSON. Нет возможности запросить ответ в формате XML.

Возможные ошибки

Код ошибкиПричина
PHOTO_SIZE_LIMIT_EXCEEDEDРазмер двоичного содержимого изображения в байтах превышает предел
PHOTO_SIZE_TOO_SMALLСлишком маленький размер изображения в пикселях
PHOTO_SIZE_TOO_BIGСлишком большой размер изображения в пикселях
PHOTO_INVALID_FORMATНевозможно распознать формат изображения
PHOTO_IMAGE_CORRUPTEDФормат изображения распознан, но содержимое повреждено
PHOTO_NO_IMAGEВ запросе не найдено изображение

Полный список возможных ошибок с кодами можно посмотреть на странице Обработка ошибок.

Шаги 1-2 необходимо повторить столько раз, сколько Моментов необходимо создать на шаге 3

При получении результата переходим к следующему шагу: созданию Момента.

Шаг 3 – создание момента

В последнюю очередь необходимо вызвать метод moments.commit.
Он завершает загрузку медиа и создает Момент, который публикуется от имени пользователя.

Для использования метода понадобятся идентификаторы загруженных фотографий и маркеры token.
Более подробно о возможностях можно прочитать в описании метода.