[php] Постинг фотографии на стену

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
meandnano
Сообщения: 3
Зарегистрирован: 11 май 2011, 13:06

[php] Постинг фотографии на стену

Сообщение meandnano »

Добрый день!
Делаю удаленную часть mobile-приложения (php страничка) для авторизации ВК и добавления на стену сообщения с фотографией.

Делаю загрузку изображения на сервер ВК следующим образом:
 Загрузка фотографий на стену пользователя
Загрузка фотографий на стену пользователя осуществляется в 3 этапа:

1. С помощью метода photos.getWallUploadServer приложение узнает http-адрес для загрузки фотографии на стену текущего пользователя, другого пользователя или группы в зависимости от переданных параметров uid или gid.

2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен включать поле photo, содержащее файл с изображением (JPG, PNG, BMP или GIF)

Пример результата загрузки фотографии:

{"server": "4753", "photo": "2041c53171:w", "hash": "76a17dce73ccb6edf9d7382c7787d53a"}

3. С помощью метода photos.saveWallPhoto приложение передает серверу полученные данные (server, photo, hash и опциональные uid и gid) и получает данные о загруженной фотографии.
Столкнулся со следующей проблемой:
после получения адреса сервера делаю POST-запрос на него таким образом:
 Этап 2

Код: Выделить всё

$ch = curl_init($uri);     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);     curl_setopt($ch, CURLOPT_POSTFIELDS, "photo=$photo");  //$photo - прямая ссылка на изображение     $result = curl_exec($ch);     if (curl_errno($ch) != 0 && empty($result)) {        $result = false;    }     curl_close($ch);
В возвращаемой json-строке получаю значения "server" и "hash", а "photo" каждый раз возвращается пустым.
Соответственно, на следующем этапе я получаю ошибку - "не все требуемые параметры заполнены".

Есть идеи причины и решения? Может файл надо передавать не по URI, а как-то иначе?
Ответить