Задать вопрос
@idccc

Как передать ВКонтакте картинку с сервера методом Curl?

Добрый день.

Столкнулся с проблемой при загрузке картинки на сервер ВКонтакте с удаленного сервера с помощью curl/php.

Для загрузки используется метод getWallUploadServer, который возвращает нам с сервера VK ссылку для загрузки изображения. Нам нужно сделать к этой ссылке пост-запрос с полем 'photo', которое содержит файл с изображением.

Параметры передаю, но ответ говорит мне, что я не посылаю картинки.

curl_setopt($ch, CURLOPT_URL, $url);  
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
		curl_setopt($ch, CURLOPT_VERBOSE , 1);
		$post_params['photo'] = $_SERVER['DOCUMENT_ROOT'].'/img/site/ban/dogma.jpg';
		$post_params['type'] = 'image/jpeg';
		curl_setopt($curl, CURLOPT_POSTFIELDS, $post_params);
		$output = curl_exec($ch);


curl_getinfo говорит следующее
size_upload 0
size_download 72

Значит ли это, что данные не были переданы в прицнипе?
  • Вопрос задан
  • 692 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 1
@Nc_Soft
public function uploadFile($url, $path)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POST, true);

        if (class_exists('\CURLFile')) {
            curl_setopt($ch, CURLOPT_POSTFIELDS, ['file1' => new \CURLFile($path)]);
        } else {
            curl_setopt($ch, CURLOPT_POSTFIELDS, ['file1' => "@$path"]);
        }

        $data = curl_exec($ch);
        curl_close($ch);
        return json_decode($data, true);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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