Поколупался и дошел до финала, постить получается, код рабочий!
class Model_Vk {
private $access_token;
private $url = "https://api.vk.com/method/";
/**
* Конструктор
*/
public function __construct($access_token) {
$this->access_token = $access_token;
}
/**
* Делает запрос к Api VK
* @param $method
* @param $params
*/
public function method($method, $params = null) {
$p = "";
if( $params && is_array($params) ) {
foreach($params as $key => $param) {
$p .= ($p == "" ? "" : "&") . $key . "=" . urlencode($param);
}
}
$response = file_get_contents($this->url . $method . "?" . ($p ? $p . "&" : "") . "access_token=" . $this->access_token);
if( $response ) {
return json_decode($response);
}
return false;
}
public function uploadImage($file, $group_id = null, $album_id = null) {
$params = array();
if( $group_id ) {
$params['group_id'] = $group_id;
}
if( $album_id ) {
$params['album_id'] = $album_id;
}
//Получаем сервер для загрузки изображения
$response = $this->method("photos.getUploadServer", $params);
if( isset($response) == false ) {
print_r($response);
exit;
}
$server = $response->response->upload_url;
$postparam=array("file1"=>"@".$file);
//Отправляем файл на сервер
$ch = curl_init($server);
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'));
$json = json_decode(curl_exec($ch));
curl_close($ch);
//Сохраняем файл в альбом
$photo = $this->method("photos.save", array(
"server" => $json->server,
"photos_list" => $json->photos_list,
"album_id" => $album_id,
"hash" => $json->hash,
'gid' => $group_id
));
if( isset($photo->response[0]->id) ) {
return $photo->response[0]->id;
} else {
return false;
}
}
}
Использование:
необходим токен, standalone приложение, токен получаем по ссылке
https://oauth.vk.com/authorize?client_id=YOUR_APP_...
где YOUR_APP_ID - id вашего приложения
копируем его из адресной строки
$access_token = "токен";
$group_id = "ид группы";
$album_id = 'ид альбома в который будем грузить';
$image_path = путь к файлу;
$vk = new Model_Vk($access_token);
//Загружаем изображение
$upload_img = $vk->uploadImage($image_path,$group_id,$album_id);