Здравствуйте!
Я уже второй день мучаюсь с VK API и хочу сделать возможной загрузку изображений на сервера ВК, а дальше прикреплять это изображение к посту. Как прикрепить изображение я знаю, а вот с загрузкой изображения у меня возникли проблемы. В документации все написано так, что новичку вроде меня понять сложновато. Ниже я приведу небольшой кусок кода с комментариями, который отвечает за загрузку изображения:
// получаю ссылку, куда загружать изображение
$upl_url = vk_api("photos.getWallUploadServer", "group_id=".$community);
// отправляю изображение по ссылке
if (isset($upl_url["response"]["upload_url"])) {
$photo['photo'] = '@'.'/home/a7223299/public_html/images_b/'.$picture;
$curl = curl_init($upl_url["response"]["upload_url"]);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $photo);
// получаю ответ
$s = curl_exec($curl);
curl_close($curl);
}
else {
echo 'Server is not responding.';
}
// проверка #1
print_r($s);
echo '<br>';
echo '<br>';
// преобразую ответ в массив
$data_ph = json_decode($s, true);
// проверка #2
print_r($data_ph);
echo '<br>';
echo '<br>';
// сохраняю фотографию
$photo_id = vk_api("photos.saveWallPhoto", "&server=".$data_ph['server']."&hash=".$data_ph['hash']."photo=".$data_ph['photo']);
// проверка #3
print_r($photo_id);
Вот так выглядит функция vk_api():
function vk_api($method, $params) {
$json = file_get_contents("https://api.vk.com/method/".$method."?".$params."&access_token=".$access_tocken."&v=".$version);
return json_decode($json, true);
}
Заранее прошу прощения за такой страшный формат текста. Мне и самому страшно. Вот что возвращает первая функция print_r():
{"server":623229,"photo":"[{\"photo\":\"73f87c2dc5:z\",\"sizes\":[[\"s\",\"623229818\",\"27a4a\",\"kFTS7DLdUlM\",75,75],[\"m\",\"623229818\",\"27a4b\",\"GGBUksGzMoM\",130,130],[\"x\",\"623229818\",\"27a4c\",\"jkMD6V0XZq4\",604,604],[\"y\",\"623229818\",\"27a4d\",\"NKYhqdtZFcs\",807,807],[\"z\",\"623229818\",\"27a4e\",\"0uLGELMRYU0\",1000,1000],[\"o\",\"623229818\",\"27a4f\",\"XsIMRptiNQs\",130,130],[\"p\",\"623229818\",\"27a50\",\"u-uq3QNvfqs\",200,200],[\"q\",\"623229818\",\"27a51\",\"FVR7sv_5nYs\",320,320],[\"r\",\"623229818\",\"27a52\",\"F-rycbFMbE4\",510,510]],\"kid\":\"8bee91a57a9a42f79f87a04a46708486\"}]","hash":"929481842a51b72f8fdb44a229e829b6"}
Вторая:
Array ( [server] => 623229 [photo] => [{"photo":"73f87c2dc5:z","sizes":[["s","623229818","27a4a","kFTS7DLdUlM",75,75],["m","623229818","27a4b","GGBUksGzMoM",130,130],["x","623229818","27a4c","jkMD6V0XZq4",604,604],["y","623229818","27a4d","NKYhqdtZFcs",807,807],["z","623229818","27a4e","0uLGELMRYU0",1000,1000],["o","623229818","27a4f","XsIMRptiNQs",130,130],["p","623229818","27a50","u-uq3QNvfqs",200,200],["q","623229818","27a51","FVR7sv_5nYs",320,320],["r","623229818","27a52","F-rycbFMbE4",510,510]],"kid":"8bee91a57a9a42f79f87a04a46708486"}] [hash] => 929481842a51b72f8fdb44a229e829b6 )
Третья:
Array ( [error] => Array ( [error_code] => 100 [error_msg] => One of the parameters specified was missing or invalid: photo is undefined [request_params] => Array ( [0] => Array ( [key] => oauth [value] => 1 ) [1] => Array ( [key] => method [value] => photos.saveWallPhoto ) [2] => Array ( [key] => [value] => ) [3] => Array ( [key] => server [value] => 623229 ) [4] => Array ( [key] => hash [value] => 929481842a51b72f8fdb44a229e829b6photo=[{"photo":"73f87c2dc5:z","sizes":[["s","623229818","27a4a","kFTS7DLdUlM",75,75],["m","623229818","27a4b","GGBUksGzMoM",130,130],["x","623229818","27a4c","jkMD6V0XZq4",604,604],["y","623229818","27a4d","NKYhqdtZFcs",807,807],["z","623229818","27a4e","0uLGELMRYU0",1000,1000],["o","623229818","27a4f","XsIMRptiNQs",130,130],["p","623229818","27a50","u-uq3QNvfqs",200,200],["q","623229818","27a51","FVR7sv_5nYs",320,320],["r","623229818","27a52","F-rycbFMbE4",510,510]],"kid":"8bee91a57a9a42f79f87a04a46708486"}] ) [5] => Array ( [key] => v [value] => 5.29 ) ) ) )
Подскажите, пожалуйста, где я напортачил и что делать с этим страшным кодом. Спасибо.