Загрузка фотографии VK (php)

Рейтинг: 2Ответов: 1Опубликовано: 06.12.2014

Доброго всем дня!

В $photos хранится строка с фото.

При выводе на экран через echo выводит правильно:

'file1' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/089dd91706ec5a801102fc.jpg','file2' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/40fc3c94aec04cde3fa9b8.jpg','file3' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/1edb44ca42ad51597678a2.jpg','file4' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/f9cbf3efd9a00b1f0fbb6b.jpg'

Далее отправляю

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $VKuploadUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  array($photos)); 
$otvet = curl_exec($ch); 
curl_close($ch);

и в ответ [photo] => []

а если

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $VKuploadUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  array('file1' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/089dd91706ec5a801102fc.jpg','file2' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/40fc3c94aec04cde3fa9b8.jpg','file3' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/1edb44ca42ad51597678a2.jpg','file4' => '@/var/www/xdrent/data/www/test.biz/upload/lexx/25397178_118034/f9cbf3efd9a00b1f0fbb6b.jpg')); 
$otvet = curl_exec($ch); 
curl_close($ch);

То отправляет ок

В чем проблема?

Ответы

▲ 2Принят

Замените строку:

curl_setopt($ch, CURLOPT_POSTFIELDS,  array($photos));

на строку:

curl_setopt($ch, CURLOPT_POSTFIELDS,  $photos);

И все будет работать!

UPD
Как я понял, переменная $photos у Вас строка, по этой причине у Вас код и не работает. Вам надо на стадии формирования путей к картинкам записывать их в массив.
Я так понимаю, у тебя идет цикл по вытягиванию картинок из БД.

//Начало цикла
$photos['file'.$i] = 'ПУТЬ ДО КАРТИНКИ';
//Конец цикла

UPD2

Правильный код:

$photos = array();

for ($k = 0; $k < count($wall[$i]->attachments); $k++) {

 $nom = $k + 1;

 $photos['file'.$nom] = '@' . $dir . $newfile;    
}

И после чего используете строку: curl_setopt($ch, CURLOPT_POSTFIELDS, $photos);.