@DuckerMan

Как правильно залить фото через вк апи?

Приветствую.

Решил залить файлы в ВК.

Код :

function DoPostRequestNigga($url, $post_data){


  
  $post_data = http_build_query($post_data); // Шифруем,для передачи на сервер


$ch = curl_init();  
  
curl_setopt($ch, CURLOPT_URL, $url);  
  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  

  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:multipart/form-data"));
// указываем, что у нас POST запрос  
curl_setopt($ch, CURLOPT_POST, 1);  
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, 1);  
// добавляем переменные  
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  


  
$output = curl_exec($ch);  

echo __DIR__;
  return $output;
curl_close($ch);




	}



	print_r(DoPostRequestNigga($vk->request('photos.getMessagesUploadServer')['response']['upload_url'], array('photo' =>  __DIR__ . '/@photo.png')));


Но, photo в ответе сервера ВК - все равно пустое.
  • Вопрос задан
  • 1292 просмотра
Решения вопроса 1
Ahen
@Ahen
Универсальный дилетант
На 5.6 работает вот так.
Пример для загрузки в диалог:
(важно, смотрите в документации, в диалог фото грузится в поле photo, в другие места может грузиться в поле file).

$photo = 'file.png';
    $postparam=array("photo"=>"@".$photo);
    $ch = curl_init($request_server->response->upload_url);
    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postparam);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data; charset=UTF-8'));
    $upload = json_decode(curl_exec($ch));
    curl_close($ch);


Для php7 используется CURLFile и CURL без параметра CURLOPT_SAFE_UPLOAD
"photo"=> new CURLFile($photo)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы