Загрузка файлов
Возможность поделиться с друзьями своей фотографией, прикрепить документ или понравившийся видеоклип очень важна для многих пользователей. Реализовав эту функциональность, вы сделаете свое приложение более привлекательным и востребованным.
Процесс загрузки любого файла состоит из трех стандартных этапов:
- 1.
Получение адреса для загрузки.
- 2.
Передача содержимого файлов на полученный адрес в формате
multipart/form-data
. - 3.
Сохранение информации о загруженном файле.
Детали процесса загрузки (например, название поля с файлом в POST
-запросе) могут различаться в зависимости от типа файла. Ниже представлено подробное руководство для всех типов медиаконтента.
Загрузка фотографий в альбом
Допустимые форматы: JPG, PNG, GIF.
Ограничения: не более 5 фотографий за один раз, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: file{i}, i=[1..5]
.
Получение адреса
Вызовите метод photos.getUploadServer
, чтобы получить адрес для загрузки фото. Для загрузки фотографии в сообщество необходимо передать идентификатор сообщества в параметре group_id
.
Передача файла
Передайте файлы на адрес upload_url
, полученный в предыдущем пункте, сформировав POST-запрос с полями file1
-file5
. Эти поля должны содержать изображения в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photos_list
, hash
, aid
:
{
"server":123456,
"photos_list":"[{\"photo\":\"e9f2eba71b:y\",\"sizes\":[[\"s\",\"123456852\",\"e65f\",\"Br4ir9YAvO8\",75,41],[\"m\",\"123456852\",\"e660\",\"Lqpe1N8s8zY\",130,71],[\"x\",\"123456852\",\"e661\",\"tRFbnaIP_4c\",604,330],[\"y\",\"123456852\",\"e662\",\"8JhBOy0qR6o\",748,409],\"kid\":\"569c3da3b168b347315aa5adc92a953a\",\"debug\":\"xsymyxyyyoypyqyry\"}]",
"aid":98754321,
"hash":"22b333dbbef7cd9b1f9829b5f8713f86"
}
Поля server
и aid
содержат числовые значения, в hash
возвращается строка, а в поле photos_list
находится строка с JSON-объектом, структуру которого важно сохранить в исходном виде. В PHP вы можете использовать json_decode()
для всего ответа.
Сохранение результата
Чтобы сохранить фотографии в альбоме, вызовите метод photos.save
с параметрами server
, photos_list
, aid
, hash
, полученными на предыдущем этапе.
Загрузка фотографий на стену
Допустимые форматы: JPG, PNG, GIF.
Ограничения: не более 6 фотографий за один раз в методе photos.saveWallPhoto
, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: photo
.
Получение адреса
Вызовите метод photos.getWallUploadServer
, чтобы получить адрес для загрузки фото. Для загрузки фотографии в сообщество необходимо передать идентификатор сообщества в параметре group_id
.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST-запрос с полем photo
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photo
, hash
:
{
"server": 123456,
"photo": "[{\"photo\":\"26f1e24c4c:w\",\"sizes\":[[\"s\",\"123456852\",\"15e88\",\"01qMnm6kJ-U\",56,75],[\"m\",\"123456852\",\"15e89\",\"Y9BJ8lGrL_0\",97,130],[\"x\",\"123456852\",\"15e8a\",\"wVmxGPX0i88\",453,604],[\"y\",\"123456852\",\"15e8b\",\"ZGgaSculk1E\",605,807],[\"z\",\"123456852\",\"15e8c\",\"yl_hClRMfG8\",810,1080],\"kid\":\"95574768563a263c4a275f4af50a9425\",\"debug\":\"xswmwxwywzwwwowpwqwrw\"}]",
"hash": "ed06bb07ef7a128fdae22decad8291f7"
}
Поле server
содержит числовое значение, в hash
возвращается строка, а в поле photo
находится JSON-объект, структуру которого важно сохранить в исходном виде. В PHP вы можете использовать json_decode()
для всего ответа.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод photos.saveWallPhoto
с параметрами server
, photo
, hash
, полученными на предыдущем этапе.
Публикация фотографии
После успешной загрузки фотографии вы можете разместить её на стене, опубликовав запись с помощью метода wall.post
и указав идентификатор фотографии в формате "photo" + {owner_id} + "_" + {photo_id}
(например, photo12345_654321
) в параметре attachments
. В {owner_id}
необходимо указывать то же значение, которое пришло Вам в ответе от метода photos.saveWallPhoto
.
Загрузка главной фотографии пользователя или сообщества
Допустимые форматы: JPG, PNG, GIF.
Ограничения: размер не менее 200px x 200px, соотношение сторон от 0.25 до 3, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: photo
.
Получение адреса
Вызовите метод , чтобы получить адрес для загрузки фото. Для загрузки главной фотографии сообщества необходимо передать его идентификатор со знаком «минус» в параметре owner_id
.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST-запрос с полем photo
. Это поле должно содержать изображение в формате multipart/form-data
.
Дополнительно вы можете передать параметр _square_crop
в формате x,y,w
, где x
и y
— координаты верхнего правого угла миниатюры, а w
— сторона квадрата. Тогда для фотографии также будет подготовлена квадратная миниатюра.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photo
, mid
, hash
, message_code
, profile_aid
:
{
"server": 999,
"photo": "eyJvaWQiOjIzMTQ4NTIsInBob3RvIjp7InBob3RvIjoiZmEyZjViNmMzYjp3Iiwic2l6ZXMiOltbInMiLCI2MjY2Mjc4NTGRkMThjYTY2NjZmMjI3NTRkODAxNDUyNDUzOSJ9",
"mid": 2314852,
"hash": "7448f93f405dfd5c444f5d4aabb84942",
"message_code": 2,
"profile_aid": -6
}
Поля server
, mid
, message_code
, profile_aid
содержат числовые значения, а в полях hash
и photo
возвращаются строки.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод с параметрами server
, photo
, hash
, полученными на предыдущем этапе.
В iFrame-приложении действуйте следующим образом:
- •С помощью Javascript SDK вызовите метод photos.saveOwnerPhoto с параметрами
server, photo
иhash
. В приложении откроется окно предупреждения для сохранения новой фотографии. Если пользователь соглашается, то фотография успешно сохраняется и возвращается параметрphoto_src
. При этом выполнять следующий пункт не нужно.
Если вы вызываете через прямое обращение к API, то Вам необходимо дополнительно выполнить следующий пункт.
Вызовите метод Client API showProfilePhotoBox
с параметром photo_hash
. В приложении будет отображено окно для подтверждения изменения фотографии.
Загрузка фотографии в личное сообщение
Допустимые форматы: JPG, PNG, GIF.
Ограничения: сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: photo
.
Получение адреса
Вызовите метод photos.getMessagesUploadServer
, чтобы получить адрес для загрузки фото.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST-запрос с полем photo
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photo
, hash
:
{
"server": 626627,
"photo": "[{\"photo\":\"190ab6eadf:w\",\"sizes\":[[\"s\",\"626627852\",\"e6a3\",\"lMU557Tx-78\",75,56],[\"m\",\"626627852\",\"e6a4\",\"hq8g5CzPmXs\",130,97],[\"x\",\"626627852\",\"e6a5\",\"c-_TPYB_rIU\",604,453],\"kid\":\"72cfb87071e2d6624a38167524d5b4aa\",\"debug\":\"xswmwxwywzwwwowpwqwrw\"}]",
"hash": "581d7a4ffc81e2bfe90016d8b35c288d"
}
Поле server
содержит числовое значение, в hash
возвращается строка, а в поле photo
находится JSON-объект, структуру которого важно сохранить в исходном виде. В PHP вы можете использовать json_decode()
для всего ответа.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод photos.saveMessagesPhoto
с параметрами server
, photo
, hash
, полученными на предыдущем этапе.
После успешной загрузки фотографии вы можете прикрепить ее к личному сообщению, используя метод messages.send
и указав данные фотографии в параметре attachment
.
Загрузка главной фотографии для чата
Допустимые форматы: JPG, PNG, GIF.
Ограничения: минимальный размер фото — 200px x 200px, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: file
.
Получение адреса
Вызовите метод , чтобы получить адрес для загрузки фото.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST-запрос с полем file
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полем response
:
{
"response": "eyJvaWQiOjIwMDAwMDAyMDUsInBob3RvIjp7InBob3RvIjoiZTNlMTM1ZDBjNDp4Iiwic2l6ZXMiOltbInMiLCI2MzM3cGZ3Iiw3NSw1M10sWyJtIiwiNjMzNzI1ODUyIiwzMzcyNSwibWlkIjoyMzE0ODUyLCJfc2lnIjoiNmU2YjdhZGU1MDkwYTM5NDg5ZGU0ZmM1Yjg0YTU3YmQifQ"
}
Поле response
содержит строку.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод messages.setChatPhoto
, передав в параметре file
содержимое поля response
, полученного на предыдущем этапе.
Загрузка фотографии для товара
Допустимые форматы: JPG, PNG, GIF.
Ограничения: минимальный размер фото — 400px x 400px, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Поле POST-запроса: file
.
Получение адреса
Вызовите метод , чтобы получить адрес для загрузки фото. Если вы хотите загрузить основную фотографию товара, необходимо передать параметр main_photo
= 1.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photo
, hash
, crop_data
, crop_hash
:
{
"server": 625831,
"photo": "[[{\"photo\":\"8d81799f90:w\",\"sizes\":[[\"s\",\"625831075\",\"45839\",\"-5fbUeQq1YY\",75,56]],[[\"m\",\"625831075\",\"4583a\",\"G8yAYbsk7M4\",130,97]]]}]",
"hash": "8954a4da5ba06d4e",
"crop_data": "oAAmMpwAAAAAlTWyjA",
"crop_hash": "729155760247b391134"
}
Для дополнительной фотографии поля crop_data
и crop_hash
не возвращаются.
Поле server
содержит числовое значение, в hash
, crop_data
и crop_hash
возвращаются строки, а в поле photo
находится JSON-объект, структуру которого важно сохранить в исходном виде (убрав, однако, экранирование символов перед дальнейшим использованием). В PHP вы можете использовать json_decode()
для всего ответа и затем stripslashes()
для объекта photo
.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод с параметрами server
, photo
, crop_data
, crop_hash
, полученными на предыдущем этапе. Если фотография не основная, поля crop_data
и crop_hash
передавать не нужно.
После успешной загрузки фотографии вы можете прикрепить ее к товару, используя методы market.add
или market.edit
и указав идентификатор фотографии в параметре main_photo_id
или photo_id
.
Загрузка фотографии для подборки товаров
Допустимые форматы: JPG, PNG, GIF.
Ограничения: минимальный размер фото — 1280px x 720px, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт, соотношение сторон не менее 1:20.
Название поля POST-запроса: file
.
Получение адреса
Вызовите метод , чтобы получить адрес для загрузки фото.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями server
, photo
, gid
, hash
:
{
"server": 999,
"photo": "eyJwaG90byI6IntcInBob",
"gid": 102416739,
"hash": "0adc3bd6509fdcf97052b0594c4063ff"
}
Поля server
и gid
содержат числовые значения, а в полях photo
и hash
возвращаются строки.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод с параметрами server
, photo
, hash
, полученными на предыдущем этапе.
После успешной загрузки фотографии вы можете прикрепить ее к подборке товаров, используя методы market.addAlbum
или market.editAlbum
и указав идентификатор фотографии в параметре photo_id
.
Загрузка аудиозаписей
Допустимые форматы: MP3.
Ограничения: файл объемом не более 200 МБайт.
Поле POST-запроса: file
.
Получение адреса
Вызовите метод audio.getUploadServer
, чтобы получить адрес для загрузки аудиозаписи.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
. Это поле должно содержать mp3-файл в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями redirect
, server
, audio
, hash
:
{
"redirect": "http://vk.com/audio.php?act=done_add&mid=123456&aid=0&gid=0&server=654321&audio=%7B%22audio%22%3A%2215bf8d9772%22%2C%22time%22%3A199%2C%22artist%22%3A%22%22%2C%22title%22%3A%22%22%2C%22genre%22%3A0%2C%22album%22%3A%22%22%2C%22bitrate%22%3A192%2C%22bitrate_mode%22%3A%22cbr%22%2C%22md5%22%3A%22d27787de614807aafe4460818e341dbb%22%2C%22kad%22%3A%2218005ffc2aaab4fbbdd%22%2C%22vkaf_gen_data%22%3A%7B%22key%22%3A%22fp2314852_15bf8d9772%22%2C%22res%22%3A%7B%22result%22%3Atrue%2C%22_%22%3A%22_%22%7D%2C%22err%22%3A%5B%5D%7D%7D&hash=82cc901615b98153398e4c230ef79eaf",
"server": 654321,
"audio": "%7B%22audio%22%3A%2215bf8d9772%22%2C%22time%22%3A199%2C%22artist%22%3A%22%22%2C%22title%22%3A%22%22%2C%22genre%22%3A0%2C%22album%22%3A%22%22%2C%22bitrate%22%3A192%2C%22bitrate_mode%22%3A%22cbr%22%2C%22md5%22%3A%22d27787de614807aafe4460818e341dbb%22%2C%22kad%22%3A%2218005ffc2aaab4fbbdd%22%2C%22vkaf_gen_data%22%3A%7B%22key%22%3A%22fp123456_15bf8d9772%22%2C%22res%22%3A%7B%22result%22%3Atrue%2C%22_%22%3A%22_%22%7D%2C%22err%22%3A%5B%5D%7D%7D",
"hash": "82cc901615b98153398e4c230ef79eaf"
}
Поле server
содержит числовое значение, в redirect
, audio
и hash
возвращаются строки. Содержимое поля audio
не следует каким-либо образом менять или перекодировать.
Сохранение результата
Чтобы сохранить аудиозапись, вызовите метод audio.save
с параметрами server
, audio
, hash
, полученными на предыдущем этапе.
Загрузка видеозаписей
Допустимые форматы: AVI, MP4, 3GP, MPEG, MOV, MP3, FLV, WMV.
Поле POST-запроса: video_file
.
Получение адреса
Вызовите метод video.save
, чтобы получить адрес для загрузки видео. С помощью этого метода вы также можете задать название, описание видео и его настройки приватности.
Если вы хотите загрузить видео с внешнего видеохостинга, необходимо передать адрес страницы с видео в параметре link
, а затем просто перейти по адресу из upload_url
, не выполняя следующих пунктов.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем video_file
. Это поле должно содержать видеофайл в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями size
, video_id
:
{
"size": 1234,
"video_id": 1234567
}
Поля size
и video_id
содержат числовые значения.
Сохранение результата
После загрузки видеозапись проходит обработку и в списке видеозаписей может появиться спустя некоторое время.
Загрузка документов
Допустимые форматы: любые форматы за исключением mp3 и исполняемых файлов.
Ограничения: файл объемом не более 200 МБайт.
Поле POST-запроса: file
.
Получение адреса
Вызовите метод docs.getUploadServer
, docs.getWallUploadServer
(для загрузки на стену) или docs.getMessagesUploadServer
(для загрузки документа в сообщение), чтобы получить адрес для загрузки документа. Если вы хотите загрузить документ в сообщество, передайте его идентификатор в параметре group_id
.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
. Это поле должно содержать файл в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полем file
:
{
"file": "123456|65421|0|415317|20ee43693a|jpg|81897|Document.jpg|6798bc4fe908cc476cb1c13ce844a985|105d984a920fe7ee9042681bb6d30fbd|m_20ee43693a||m:130x72,s:100x55,x:604x331,y:807x442,o:748x409"
}
Поле file
содержит строку.
Сохранение результата
Чтобы сохранить документ, вызовите метод docs.save
с параметром file
, полученным на предыдущем этапе.
Загрузка обложки сообщества
Допустимые форматы: JPG, PNG, GIF.
Ограничения: минимальный размер фото — 795px x 265px, сумма высоты и ширины не более 14000px, файл объемом не более 50 МБайт. Рекомендуемый размер: 1590x530px. В сутки можно загрузить не более 1500 обложек.
Поле POST-запроса: photo
.
Получение адреса
Вызовите метод, чтобы получить адрес для загрузки фото. Необходимо указать координаты обрезки фотографии в параметрах crop_x
, crop_y
, crop_x2
, crop_y2
.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем photo
. Это поле должно содержать изображение в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полями hash
и photo
:
{
"hash": "402784f0ec814632ac","photo":"eyJvaWQiOi0zNzI3MzTUsMjAwIiwwLCIxNjgwLDEwNTAiLCI3OTUsNDk3Il0sImJ3YWN0Ijoib3duZXJfY292ZXIiLCJzZXJ2ZXIiOjYzODYyOSwibWlkIjoyMzE0ODUyLCc4MSwiZGF0YSI6WyJ4QUFtLXBRQUFBQUFtRUxmY0FBS3A2VEh4bU5WYmJKOG5ZQUFLcDZ2VkMtWjRVMXdmbk9BQUtwNnnMXVvUGdxYkNBQUtwN21nSGJwQlJJdnMxRhpdWM5bldkRktwQUFBS3A3R1NhdFptbFJWNlNCQUFLcDdVamJEFBS3A3NUktQnJTSHotS0hFQUFLcDhLVVRTbzA4VURpTSIsIjAsMCw3OJfc2lnIjoiNjNkNmQ5NmY1ZmI0NWFiYzdjYjZjMjliOGM5NWNhNWMifQ"
}
Оба поля содержат строки.
Сохранение результата
Чтобы сохранить фотографию, вызовите метод , передав параметры hash
и photo
, полученные на предыдущем этапе.
Загрузка аудиосообщения
Допустимые форматы: Ogg Opus.
Ограничения: частота дискретизации — 16 кГц, битрейт — 16 кбит/с, длительность — не более 5 минут, моно.
Поле POST-запроса: file
.
Получение адреса
Вызовите метод docs.getMessagesUploadServer
с параметром type
= audio_message
, чтобы получить адрес для загрузки.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
. Это поле должно содержать файл в формате multipart/form-data
.
После успешной загрузки сервер возвращает в ответе JSON-объект с полем file
:
{
"file": "123456|65421|0|415317|20ee43693a|jpg|81897|Document.jpg|6798bc4fe908cc476cb1c13ce844a985|105d984a920fe7ee9042681bb6d30fbd|m_20ee43693a||m:130x72,s:100x55,x:604x331,y:807x442,o:748x409"
}
Поле file
содержит строку.
Сохранение результата
Чтобы сохранить документ, вызовите метод docs.save
с параметром file
, полученным на предыдущем этапе.
После успешной загрузки вы можете отправить его, используя метод messages.send
(параметр attachment
).
Загрузка истории
Допустимые форматы: JPG, PNG, GIF.
Ограничения: сумма высоты и ширины не более 14000px, файл объемом не более 10 МБайт.
Формат видео: h264 video, aac audio, максимальное разрешение 720px х 1280px, 30fps.
Поле POST-запроса: file
для фотографии, video_file
для видеозаписи.
Получение адреса
Вызовите метод stories.getPhotoUploadServer
или stories.getVideoUploadServer
, чтобы получить адрес для загрузки фото или видео.
Передача файла
Передайте файл на адрес upload_url
, полученный в предыдущем пункте, сформировав POST
-запрос с полем file
/video_file
.
Это поле должно содержать изображение или видеоролик в формате multipart/form-data
.
После успешной загрузки сервер возвращает строку upload_result
.
Сохранение результата
Для сохранения загруженных историй нужно вызвать stories.save
, передав в поле upload_results
строку, полученную на предыдущем этапе.