Пытаюсь постить картинки на стену с помощью VK API. Нашел такой вот скрипт с CURL, который выполняет необходимую загрузку изображения. Но вот возник вопрос, что CURL не работает. Первый массив приходит успешно, а на 2 этапе сохранения вылазит такая ошибка
One of the parameters specified was missing or invalid: photo is undefined
Хотя я уверен, что картинка по ссылке есть. В проверке полученных переменных перед функцией сохранения ничего не приходит, они все пустые. Не пойму, в чем может быть ошибка.
$tok = '00000000000000000000'; ///Токен
$myidgr = '00000000'; ///ID или домен группы - паблика
$imga = 'https://pp.userapi.com/c638724/v638724055/73fc/pqXzLlH10xU.jpg'; ///Картинка для постинга
///Получаем разрешение на загрузку картинки Вконтакте
$getwall = 'https://api.vk.com/method/photos.getWallUploadServer?group_id='.$myidgr.'&access_token='.$tok;
$dl = file_get_contents($getwall);
$dl = json_decode($dl, true); ///Декодируем json
echo '<pre>';
echo(print_r($dl)); ///Проверка, что массив пришел
echo '</pre><br><br><br>';
$dl = $dl->response->upload_url; ///Получаем ссылку загрузки от Вконтакте
$file = new CURLFile(realpath("$imga")); ///Загружаем картинку
$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; ///Получаем данные из массива
///Сохраняем фото на сервер Вконтакте
echo "Проверка полученных переменных.".$hash."-".$serv."-".$fot;
$savephoto = 'https://api.vk.com/method/photos.saveWallPhoto?group_id='.$myidgr.'&hash='.$hash.'&server='.$serv.'&photo='.$fot.'&access_token='.$tok;
$result = file_get_contents($savephoto);
$fok = json_decode($result, true); ///Декодируем json
echo '<pre>';
echo(print_r($fok));///Проверка, что массив пришел
echo '</pre><br><br><br>';
$fok = $fok->response->id; ///Получаем данные из массива
///Вырезаем данные из информации после сохранения на сервер (Использовать если не работает переменная $result)
$fok = substr($result, strpos($result,'"id":"')+6, strlen($result)); ///Отрезаем начало до photo
///Создаем сообщение на стену
$result11 = 'https://api.vk.com/method/wall.post?owner_id=-'.$myidgr.'&attachments='.$fok.'&access_token='.$tok;
$result1 = file_get_contents($result11); ///Ставим "-" перед перемнной $myidgr если выкладываем на стену сообщества
$fok = json_decode($result1, true);
echo '<pre>';
echo(print_r($fok));///Проверка, что все прошло успешно
echo '</pre><br><br><br>';
Ну так в ошибке написано: Один из указанных параметров отсутствует или неправильный: photo не определено
скорее всего
$file = new CURLFile(realpath("$imga"));
Возвращает не то, что вам нужно, возможно он не находить локальный файл Больше диагностики не помешало-бы, что-бы знать что загружают и их какого файла
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть веб-сокет сервер, основанный на Gomoob кодеЯ отсылаю сообщения этому серверу для пересылки клиентам, это файлы которые передаются...
На одном сервере имеется картинкаКак с помощью NodeJS отправить картинку на другой сервер и принять её там с средствами PHP?
Есть json-файл сохранённый в строке вида {"Org1":[{"a":1,"b":2},{