@wolf-9830

Как загрузить изображение в альбом вк?

Пытаюсь загрузить изображение себе в альбом вк, так вот, мой скрипт получает ссылку на изображение и ссылку на сервер загрузки, в документации сказано, что нужно отправить пост с этим изображение на сервер загрузки, а как это сделать?
Я пробовал так:
$response = file_get_contents($urlUploadServer."&file1=".$image_link);

Так же пробовал скачать картинку, а потом в пост запросе указать пусть к ней
$response = file_get_contents($urlUploadServer."&file1=/image.png");

Еще пробовал через curl, но тоже не прошло:
$data = array(
    "file1" => "/image.png"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $urlUploadServer);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);

В случае с file_get_contents ответ приходит, но с пустым photo_list, а с использованием curl ответ вообще не приходит, что подскажите?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
ISINVISIBLE
@ISINVISIBLE
Делай по аналогии

<?
///***Developed by invisible    ICQ: 7773296  ***///





///Настройки скрипта
      $tok = '00000000000000000000000000000000000'; ///Токен
      $myid = '0000000'; ///Мой ID
      $myidgr = '0000000'; ///ID или домен группы - паблика
      $imga = 'http://milylibka.ru/wp-content/gallery/svidaniya/azov_tandem_yo.jpg'; ///Картинка для постинга



///Получаем разрешение на загрузку картинки Вконтакте
   $dl = file_get_contents("https://api.vk.com/method/photos.getWallUploadServer?group_id=$myidgr&access_token=$tok");
   $dl = json_decode($dl); ///Декодируем json
   $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; ///Получаем данные из массива




///Сохраняем фото на сервер Вконтакте
      $result = file_get_contents("https://api.vk.com/method/photos.saveWallPhoto?group_id=$myidgr&hash=$hash&server=$serv&photo=$fot&access_token=$tok");
      $fok = json_decode($result); ///Декодируем json
      $fok = $fok->response->id; ///Получаем данные из массива


///Вырезаем данные из информации после сохранения на сервер (Использовать если не работает переменная $result)
         $fok = substr($result, strpos($result,'"id":"')+6, strlen($result)); ///Отрезаем начало до photo



///Создаем сообщение на стену
         $result1 = file_get_contents("https://api.vk.com/method/wall.post?owner_id=-$myidgr&attachments=$fok&access_token=$tok"); ///Ставим "-" перед перемнной $myidgr если выкладываем на стену сообщества



///***Developed by invisible    ICQ: 7773296  ***///
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы