Загрузка фото в VK через API

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
У меня проблемы с Хеш даже через загрузку веб версии

даже поддержка ВК не знает в чем причина)
Не имея исходных данных - никто не будет знать причины.

ЗЫ проверьте DNSы на роутере.
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Не имея исходных данных - никто не будет знать причины.

ЗЫ проверьте DNSы на роутере.
спс, попробую.

еще такой вопрос метод загрузка фотографий на стену группы photos.getWallUploadServer там так же нужно использовать "Ссылки из GAC".

приложил шаблон с методом photos.getWallUploadServer можете посмотреть, может что то забыл добавить и из-за это ошибка Хеш вылазит.
 

Вложения

Последнее редактирование:

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Читайте внимательнее документацию к АПИ и все будет работать ;-)
 

Вложения

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Читайте внимательнее документацию к АПИ и все будет работать
Наконец то все заработало:-) Спасибо, пока сравнивал с вашим шаблонам нашел у себя 5 ошибок, из-за поиска одной проблемы не обращал внимания на другие, из-за которых проект выдавал различные ошибки))
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Отсюда Вы парсите upload_url регулярным выражением
Код:
(?<=\{"response":\{"upload_url":").*?(?=",)
Дальше используете замену \/ на / и приводите данный URL к нормальному, стандартному виду.
Выбираете картинку на компьютере, кладете ее локальный адрес в переменную (в моем примере это - {-Variable.img_path-})
Используете экшин загрузки Файлов. Это который такой серый. Вызываетеся таким способом:
Жмете правую кнопку мышки - Выбираете Действия, далее - Браузер - Настройки браузера - Файлы для загрузки на сервер.
Затем используете Пост запрос с типом данных - multipart
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
В результате будет ответ с photos_list, откуда Вы парсите регулярным выражением
Код:
(?<="photos_list":").*(?=","aid")
Убираете из этой переменный символ \
Так же парсятся от туда данные переменных server и hash.
И далее используете метод - photos.save
С вышеполученными переменным.
И так делаете 100 раз.
А как засунуть во второй запрос не один, а три файла? Вроде по документации можно до пяти, но не работает(
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
А как засунуть во второй запрос не один, а три файла? Вроде по документации можно до пяти, но не работает(
Честно скажу не в курсе. Я просто делаю запросы на загрузку фоток столько раз сколько мне фоток надо загрузить и все.
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Честно скажу не в курсе. Я просто делаю запросы на загрузку фоток столько раз сколько мне фоток надо загрузить и все.
В документации
Передайте файлы на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полями file1-file5. Эти поля должны содержать изображения в формате multipart/form-data.

Но не хочет((
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
В документации
Передайте файлы на адрес upload_url, полученный в предыдущем пункте, сформировав POST-запрос с полями file1-file5. Эти поля должны содержать изображения в формате multipart/form-data.

Но не хочет((
Попробуй просто в экшин Загрузки картинки (Стандартный который) вставить переменную с указанием сразу пяти картинок (путей на компьютере).
И эту же переменную в а Пост запросе. Но это так - мысль. Не тестил я.
 

stanar

Client
Регистрация
19.12.2015
Сообщения
314
Благодарностей
157
Баллы
43
Нет, вообще ничего ПОСТ не возвращает(
Кстати, постит одну картинку без экшна Загрузка картинки
Придется, наверное, список прикручивать
 

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
787
Благодарностей
136
Баллы
43
Отсюда Вы парсите upload_url регулярным выражением
Код:
(?<=\{"response":\{"upload_url":").*?(?=",)
Дальше используете замену \/ на / и приводите данный URL к нормальному, стандартному виду.
Выбираете картинку на компьютере, кладете ее локальный адрес в переменную (в моем примере это - {-Variable.img_path-})
Используете экшин загрузки Файлов. Это который такой серый. Вызываетеся таким способом:
Жмете правую кнопку мышки - Выбираете Действия, далее - Браузер - Настройки браузера - Файлы для загрузки на сервер.
Затем используете Пост запрос с типом данных - multipart
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
В результате будет ответ с photos_list, откуда Вы парсите регулярным выражением
Код:
(?<="photos_list":").*(?=","aid")
Убираете из этой переменный символ \
Так же парсятся от туда данные переменных server и hash.
И далее используете метод - photos.save
С вышеполученными переменным.
И так делаете 100 раз.
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
А вот это обязательно указывать? И как вы вообще узнали, что вот такие вот слова нужно прописать? А переменная img_path зачем нужна? Что в ней должно лежать?
 
  • Спасибо
Реакции: artur23

execut0r

Client
Регистрация
12.03.2014
Сообщения
263
Благодарностей
271
Баллы
63
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
А вот это обязательно указывать? И как вы вообще узнали, что вот такие вот слова нужно прописать? А переменная img_path зачем нужна? Что в ней должно лежать?
Конечно обязательно. Так сервер понимает что вы от него хотите.
Узнал я из сниффера.
В данной переменной лежит путь до фотографии на компьютере, которую мы будем загружать.
Более подробнее можете посмотреть в моей конкурсной статье - тут
 
Последнее редактирование:

avtostopshik

Client
Регистрация
09.09.2016
Сообщения
787
Благодарностей
136
Баллы
43
Конечно обязательно. Так сервер понимает что вы от него хотите.
Узнал я из сниффера.
В данной переменной лежит путь до фотографии на компьютере, которую мы будем загружать.
Более подробнее можете посмотреть в моей конкурсной статье - тут
Ссылку забыл поставить)))
 

Zmaster

Client
Регистрация
20.02.2013
Сообщения
112
Благодарностей
22
Баллы
18
Security Breach2 ... единственное, что получаю в ответ. Статью конкурсную от корки до корки изучил, но делал по своему.
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
531
Баллы
93
Security Breach2 ... единственное, что получаю в ответ. Статью конкурсную от корки до корки изучил, но делал по своему.
Замените в upload_url (ссылка для загрузки, которую получаете после первого запроса) amp; на пустоту.
Эти символы лишние в ней, и не дают Вам сделать то, что хотите.
 
  • Спасибо
Реакции: Raids

Raids

Client
Регистрация
12.09.2017
Сообщения
41
Благодарностей
19
Баллы
8
Замените в upload_url (ссылка для загрузки, которую получаете после первого запроса) amp; на пустоту.
Эти символы лишние в ней, и не дают Вам сделать то, что хотите.
Офигеть как благодарен, 2 дня искал ответ...
 

artur23

Client
Регистрация
14.04.2014
Сообщения
202
Благодарностей
15
Баллы
18
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
А вот это обязательно указывать? И как вы вообще узнали, что вот такие вот слова нужно прописать? А переменная img_path зачем нужна? Что в ней должно лежать?
Не подскажите, откуда это взять?
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}

А то у меня постоянно выходит: [] в значении photolist
 

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
37
Благодарностей
0
Баллы
6
Наконец то все заработало:-) Спасибо, пока сравнивал с вашим шаблонам нашел у себя 5 ошибок, из-за поиска одной проблемы не обращал внимания на другие, из-за которых проект выдавал различные ошибки))
Подскажи, плиз, как добился того, что заработало. Я застрял на этапе передачи параметра photo. В каком виде его надо передать, чтобы приняло?

Я передаю вот в таком в поле данные POST запросом:
Код:
"[{"photo":"53a48bbda7:z","sizes":[["s",834202529,"f85a1","JLt7EiWCBI8",64,75],["m",834202529,"f85a2","VxzCbacedmA",111,130],["x",834202529,"f85a3","XwXj6lRrZtQ",517,604],["y",834202529,"f85a4","lCvdjfwY-fI",691,807],["z",834202529,"f85a5","XFAolN2j7s8",822,960],["o",834202529,"f85a6","hUg0jeUYNBI",130,152],["p",834202529,"f85a7","nGTEdnhOcf4",200,234],["q",834202529,"f85a8","i-ZUQtqVRCs",320,374],["r",834202529,"f85a9","dPATdeK5R6E",510,596]],"latitude":0,"longitude":0,"kid":"9ee22b3c49f6516b9648625a28d54a4a"
Соответственно, сервер и хэш передается только значением, и, скорее всего, с ними всё нормально. А с этим ничего не выходит
 

vovanchis

Пользователь
Регистрация
14.03.2017
Сообщения
37
Благодарностей
0
Баллы
6
Или если кто-то знает как из этих данных собрать прямую ссылку на фото, буду тоже благодарен
 

asgard

Client
Регистрация
09.09.2014
Сообщения
116
Благодарностей
5
Баллы
18
Я передаю вот в таком в поле данные POST запросом:
Код:
"[{"photo":"53a48bbda7:z","sizes":[["s",834202529,"f85a1","JLt7EiWCBI8",64,75],["m",834202529,"f85a2","VxzCbacedmA",111,130],["x",834202529,"f85a3","XwXj6lRrZtQ",517,604],["y",834202529,"f85a4","lCvdjfwY-fI",691,807],["z",834202529,"f85a5","XFAolN2j7s8",822,960],["o",834202529,"f85a6","hUg0jeUYNBI",130,152],["p",834202529,"f85a7","nGTEdnhOcf4",200,234],["q",834202529,"f85a8","i-ZUQtqVRCs",320,374],["r",834202529,"f85a9","dPATdeK5R6E",510,596]],"latitude":0,"longitude":0,"kid":"9ee22b3c49f6516b9648625a28d54a4a"
Соответственно, сервер и хэш передается только значением, и, скорее всего, с ними всё нормально. А с этим ничего не выходит
Добавь C# код:

Код:
var encoded = System.Web.HttpUtility.UrlEncode(project.Variables["photo"].Value);
return encoded;
потом сохраняешь https://api.vk.com/method/photos.saveWallPhoto
 

dmitriy1384

Client
Регистрация
04.11.2013
Сообщения
377
Благодарностей
133
Баллы
43
Так же столкнулся с проблемой загрузки главного фото в профиль по API, выдает 1 ошибку 129
Код:
{"error":{"error_code":129,"error_msg":"Invalid photo","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"photos.saveOwnerPhoto"},{"key":"server","value":"999,hash=7448f93f405dfd5c444f5d4aabb84942,photo=eyJlcnJvciI6IkVSUl9VUExPQURfRklMRV9OT1RfVVBMT0FERUQ6IG5vIFwiZmlsZVwiIGZpbGUiLCJid2FjdCI6Im93bmVyX3Bob3RvIiwic2VydmVyIjo4NDk1MjgsIm1pZCI6MzIxODAyOTI1LCJfc2lnIjoiNTZjYjJhNjhhODIwYWIyMWY1NmRmNzgwMTQ2MWYxM2YifQ"},{"key":"v","value":"5.52"}]}}

Вот что делаю, по шагам:
1. https://api.vk.com/method/photos.getOwnerPhotoUploadServer?&access_token={-Variable.token-}&v=5.52
2. Заливаю на полученный адрес post запросом фото: "photo": "{-Project.Directory-}\img\male\7866.jpg"
3. Сохраняю фото https://api.vk.com/method/photos.saveOwnerPhoto?server={-Json.server-},hash={-Json.hash-},photo={-Json.photo-}&access_token={-Variable.token-}&v=5.52 и тут выскакивает ошибка.
Может кто знает, в чем проблема или что не так делаю ?
 

Кирилл412

Пользователь
Регистрация
21.11.2018
Сообщения
146
Благодарностей
3
Баллы
18
Получается фото привязано к аккаунту и группе?, по этому fotoid только этот акк может постить, на который получали?, нельзя никак сделать, чтоб фото можно было постить разными акками без постоянного выполнения этой мутотни)), типа узнали, типа как тут описано, fotoid, и можно было это фото по этому id постить разными акками, без получения каждый раз fotoid на данный акк?
 

Кирилл412

Пользователь
Регистрация
21.11.2018
Сообщения
146
Благодарностей
3
Баллы
18
Регистрация
11.11.2014
Сообщения
114
Благодарностей
5
Баллы
18
Отсюда Вы парсите upload_url регулярным выражением
Код:
(?<=\{"response":\{"upload_url":").*?(?=",)
Дальше используете замену \/ на / и приводите данный URL к нормальному, стандартному виду.
Выбираете картинку на компьютере, кладете ее локальный адрес в переменную (в моем примере это - {-Variable.img_path-})
Используете экшин загрузки Файлов. Это который такой серый. Вызываетеся таким способом:
Жмете правую кнопку мышки - Выбираете Действия, далее - Браузер - Настройки браузера - Файлы для загрузки на сервер.
Затем используете Пост запрос с типом данных - multipart
Код:
------WebKitFormBoundary{-Variable.WebKitFormBoundary-}
Content-Disposition: form-data; name="file"; filename="{-Variable.WebKitFormBoundary-}.jpg"
Content-Type: image/jpeg
{-Variable.img_path-}
В результате будет ответ с photos_list, откуда Вы парсите регулярным выражением
Код:
(?<="photos_list":").*(?=","aid")
Убираете из этой переменный символ \
Так же парсятся от туда данные переменных server и hash.
И далее используете метод - photos.save
С вышеполученными переменным.
И так делаете 100 раз.
Здравствуйте!
как выглядит ссылка или данные "server"
 

Djanep

Client
Регистрация
16.10.2016
Сообщения
17
Благодарностей
2
Баллы
3
В PM всё работает отлично.
В ZP выдаётся ошибка в параметре name...
 

Djanep

Client
Регистрация
16.10.2016
Сообщения
17
Благодарностей
2
Баллы
3
А теперь вообще тоже самое на экшне установки переменной...
Подскажите, в чём проблема?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)