Шаг 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
.
Более подробно о возможностях можно прочитать в описании метода.