Всем примет,имею такой код,он работает с одним фото,но как можно загрузить разом 5 фоток? Понимаю,что по логике надо этот код,до поста на стену прогонять по N = к-во фото,но вот как это все сделать?
<?php
$group_id = 'XXX';
$access_token = 'XXXX';
$message = 'Hello, world!';
$image = 'test.jpg';
$url = vk('photos.getWallUploadServer', [
'group_id' => $group_id,
'v' => '5.85',
'access_token' => $access_token
])->response->upload_url; // Обращаемся сразу к <response[upload_url]>
if (isset($url))
{
$upload = json_decode(curl($url, ['photo' => new CURLFile($image)]));
if (isset($upload->server))
{
$save = vk('photos.saveWallPhoto', [
'group_id' => $group_id,
'server' => $upload->server,
'access_token' => $access_token,
'hash' => $upload->hash,
'photo' => $upload->photo,
'v' => '5.85'
])->response[0]; // Обращаемся сразу к <response[0]>
if (isset($save))
{
$post = vk('wall.post', [
'owner_id' => '-'.$group_id,
'access_token' => $access_token,
'from_group' => 1,
'message' => $message,
'attachments' => 'photo'.$save->owner_id.'_'.$save->id,
'v' => '5.85'
]);
print_r($post);
}
}
}
function vk($method, $params)
{
return json_decode(curl('https://api.vk.com/method/'.$method, $params));
}
function curl($url, $params = false)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (isset($params))
{
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
}
$upd = curl_exec($ch);
curl_close($ch);
return $upd;
}
И так же мучает вопрос,как загружать фото по ссылке,а не с моего хостинга?
Этот вопрос решил так
$content = file_get_contents(''.$_GET['url'].'');
file_put_contents('images/test.jpg', $content);
$image = 'images/test.jpg';
Название фото буду давать по vk_id юзера и потом удалять.
Вопрос решился таким костылем.
$vkid получаю от вк,далее обрабатываю
$array = explode(',', $url_photo);
И после чего выполняю
if (file_exists($file1)) {
Столько раз,сколько у нас фоток найдено в папке.И каждый ответ вношу в массив по такой схеме
$ids[] = 'photo'.$fok['response'][0]['owner_id'].'_'.$fok['response'][0]['id'];
Далее пример кода в сборке.
foreach($array as $image) {
$img = 'images/'.$vkid.'-'.$count++.'.png';
file_put_contents($img, file_get_contents($image));
}
$imga = array();
$ids = array();
$photos = explode(',', $url_photo);
foreach ($photos as $item) {
$file1 = 'images/'.$vkid.'-0.png';
$file2 = 'images/'.$vkid.'-1.png';
$file3 = 'images/'.$vkid.'-2.png';
$file4 = 'images/'.$vkid.'-3.png';
$file5 = 'images/'.$vkid.'-4.png';
}
if (file_exists($file1)) {
$getwall = 'https://api.vk.com/method/photos.getWallUploadServer?v=5.52&group_id='.$myidgr.'&access_token='.$tok;
$dl = file_get_contents($getwall);
$dl = json_decode($dl); ///Декодируем json
$dl = $dl->response->upload_url; ///Получаем ссылку загрузки от Вконтакте
$file = new CURLFile(realpath("$file1")); ///Загружаем картинку
$ch = curl_init($dl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => $file));
$data = curl_exec($ch);
curl_close($ch);
$fot = $data; ///Получаем данные из массива
$fot = json_decode($data); ///Декодируем json
$fot = $fot->photo; ///Получаем данные из массива
$hash = json_decode($data); ///Декодируем json
$hash = $hash->hash; ///Получаем данные из массива
$serv = json_decode($data); ///Декодируем json
$serv = $serv->server; ///Получаем данные из массива
///Сохраняем фото на сервер Вконтакте
$savephoto = 'https://api.vk.com/method/photos.saveWallPhoto?v=5.52&group_id='.$myidgr.'&hash='.$hash.'&server='.$serv.'&photo='.$fot.'&access_token='.$tok;
$result = file_get_contents($savephoto);
$fok = json_decode($result,true); ///Декодируем json
$ids[] = 'photo'.$fok['response'][0]['owner_id'].'_'.$fok['response'][0]['id'];
}
И так уже отправляю фото с текстом на стену.
$ids=implode(',',$ids);
if (isset($ids))
{
$post = vk('wall.post', [
'owner_id' => '-'.$myidgr,
'access_token' => $tok,
'from_group' => 1,
'message' => "Категория: $cat \n $text \n Автор: $author",
'attachments' => $ids,
'v' => '5.85',
'publish_date' => time()+80000
]);
}
Если у кого-то будут вопросы по моему коду или еще что-то пишите. Знаю что код г**но,но результата я добился.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Более месяца работал стабильноБуквально на днях начала появляться проблема: у сайта (cmf modx) отнимаются права доступа, и ни один плагин не работает,...
У меня есть рабочая форма обратной связи, когда я пишу в форме action="popphp", и нажимаю на сабмит, она перенаправляется по адресу site
Есть 2 файлаПервый обращается ко второму методом post и передает json