Загрузка фотографий на сервер вконтакте
-
- Сообщения: 5
- Зарегистрирован: 14 май 2011, 04:41
Загрузка фотографий на сервер вконтакте
Почитал документацию вконтакте, но к сожалению там все очень скудно и для начинающего совсем ни чего не понятно.
К сожалению с JavaScript до этого вообще не работал, но встала задача реализовать вот такое приложение:
Пользователь через форму загружает фотографию и в базу MySQL должен записаться ее адрес. Если хранить фотографии на своем сервере то проблем с этим ни каких на php все реализовал. Но нужно хранить именно на сервере вконтакте. Почитал про photos.getUploadServer но не могу понять как узнать ID альбома, в который необходимо загрузить фотографии. Или этот альбом надо вначале создать?
Помогите как говориться хорошим советом, ну или исходник какой нить поковырять киданите. Буду очень благодарен.
К сожалению с JavaScript до этого вообще не работал, но встала задача реализовать вот такое приложение:
Пользователь через форму загружает фотографию и в базу MySQL должен записаться ее адрес. Если хранить фотографии на своем сервере то проблем с этим ни каких на php все реализовал. Но нужно хранить именно на сервере вконтакте. Почитал про photos.getUploadServer но не могу понять как узнать ID альбома, в который необходимо загрузить фотографии. Или этот альбом надо вначале создать?
Помогите как говориться хорошим советом, ну или исходник какой нить поковырять киданите. Буду очень благодарен.
-
- Сообщения: 5
- Зарегистрирован: 14 май 2011, 04:41
Re: Загрузка фотографий на сервер вконтакте
После прочтения всей информации накидал вот такой скрипт:
Но вот не пойму в чем ошибка ибо не работает...
Код: Выделить всё
<script type="text/javascript"> VK.init(function() { VK.api('wall.getPhotoUploadServer', {}, function (data) { if (data.response) { $.post( // отправляю со своего сервера изображение на upload_url 'http://test.ru/demo_vk/1305295000_demotiv.jpg', {upload_url:data.response.upload_url}, function (json) { VK.api('wall.savePost', {wall_id: uid, message: message, server: json.server, photo: json.photo, hash:json.hash, post_id:123}, function(data) { if (data.response) { VK.callMethod("saveWallPost", data.response.post_hash); console.log(data); } } ); }, 'json'); } }); }); </script>
-
- Сообщения: 5
- Зарегистрирован: 14 май 2011, 04:41
Re: Загрузка фотографий на сервер вконтакте
Короче сам разобрался Выкладываю исходник может кому и пригодиться..
Файл uploadimage.php должен лежать в папке с фотографией
Собрал все это в кучу изучая данный форум! Так что выражаю благодарность всем тем людям которые давали ответы и выкладывали куски своих скриптов!
Но все таки остался вопрос.. Я так понимаю что для отображения большой фотографии при клике по записе на стене. Нужен Flash контейнер для Iframe приложений... Подскажите как его реализовать или где подробно об этом почитать. Ибо с Flash до сегодняшнего дня вообще не работал.
Код: Выделить всё
<script type="text/javascript"> VK.init(function() { VK.api('wall.getPhotoUploadServer', {}, function (data) { if (data.response) { $.post( // отправляю со своего сервера изображение на upload_url // необходимо создать на сервере файл uploadimage.php код для этого фойла см. ниже 'http://test.ru/uploadimage.php', {upload_url:data.response.upload_url}, function (json) { VK.api("wall.savePost", { wall_id: "<Ваше ID>", server: json.server, photo:json.photo, hash: json.hash, post_id:"123", photo_id:data.id , message: '<текст для вывода на стену>' }, function(data) { VK.callMethod("saveWallPost", data.response.post_hash); }); }, 'json'); } }); });</script>
Код: Выделить всё
<?php if (isset($_POST["upload_url"])) { $upload_url = $_POST["upload_url"]; $post_params['photo'] = '@'.'1305295000_demotiv.jpg'; ///ну тут понятно что это ваша фотка $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $upload_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); $result = curl_exec($ch); curl_close($ch); //var_dump($result); $result = json_decode($result); $mess = array (server => $result->server, photo=> $result->photo, hash => $result->hash); echo json_encode($mess); } ?>
Но все таки остался вопрос.. Я так понимаю что для отображения большой фотографии при клике по записе на стене. Нужен Flash контейнер для Iframe приложений... Подскажите как его реализовать или где подробно об этом почитать. Ибо с Flash до сегодняшнего дня вообще не работал.
Re: Загрузка фотографий на сервер вконтакте
Моё вложение сообществу. Прокси-скрипт для загрузки фото на вконтакте, облегчая работу через IFrame.
Готов к использованию в приведенном ниже виде. Для его использования направляете на него файлы file1-file5 и параметр upload_url. Далее получаете проксированный ответ от сервера ВК.
Файл uploader.php
Готов к использованию в приведенном ниже виде. Для его использования направляете на него файлы file1-file5 и параметр upload_url. Далее получаете проксированный ответ от сервера ВК.
Файл uploader.php
Код: Выделить всё
<?php// Vitaly Chekryzhev <13hakta@gmail.com>, 2011// VKontakte photo-upload proxy // Temporary dir for files$uploads_dir = '/tmp'; if (isset($_POST["upload_url"])) { $upload_url = $_POST["upload_url"]; $tmp_files = array(); foreach ($_FILES as $fieldname => $upfile) { if ($upfile["error"] == UPLOAD_ERR_OK) { $newname = "$uploads_dir/" . $upfile['name']; move_uploaded_file($upfile['tmp_name'], $newname); $post_params[$fieldname] = "@$newname"; $tmp_files[] = $newname; } } // Connect to VK through CURL $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $upload_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); $result = curl_exec($ch); curl_close($ch); // Decode results $result = json_decode($result); // Create response $msg = array('aid' => $result->aid, 'server' => $result->server, 'photos_list' => $result->photos_list, 'hash' => $result->hash); echo json_encode($msg); // Cleanup foreach ($tmp_files as $upfile) unlink($upfile);}?>
Re: Загрузка фотографий на сервер вконтакте
А что делать, если из uploadimage.php приходит следующий json-ответ:
Код: Выделить всё
{"server":null,"photo":null,"hash":null}
Re: Загрузка фотографий на сервер вконтакте
igor_ch
При запросе с сервера верно передаешь все параметры?
При запросе с сервера верно передаешь все параметры?
- boombast1k
- Сообщения: 332
- Зарегистрирован: 23 июн 2011, 07:31
Re: Загрузка фотографий на сервер вконтакте
whitenigger писал(а):Короче сам разобрался Выкладываю исходник может кому и пригодиться..Файл uploadimage.php должен лежать в папке с фотографиейКод: Выделить всё
<script type="text/javascript"> VK.init(function() { VK.api('wall.getPhotoUploadServer', {}, function (data) { if (data.response) { $.post( // отправляю со своего сервера изображение на upload_url // необходимо создать на сервере файл uploadimage.php код для этого фойла см. ниже 'http://test.ru/uploadimage.php', {upload_url:data.response.upload_url}, function (json) { VK.api("wall.savePost", { wall_id: "<Ваше ID>", server: json.server, photo:json.photo, hash: json.hash, post_id:"123", photo_id:data.id , message: '<текст для вывода на стену>' }, function(data) { VK.callMethod("saveWallPost", data.response.post_hash); }); }, 'json'); } }); });</script>
Собрал все это в кучу изучая данный форум! Так что выражаю благодарность всем тем людям которые давали ответы и выкладывали куски своих скриптов!Код: Выделить всё
<?php if (isset($_POST["upload_url"])) { $upload_url = $_POST["upload_url"]; $post_params['photo'] = '@'.'1305295000_demotiv.jpg'; ///ну тут понятно что это ваша фотка $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $upload_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); $result = curl_exec($ch); curl_close($ch); //var_dump($result); $result = json_decode($result); $mess = array (server => $result->server, photo=> $result->photo, hash => $result->hash); echo json_encode($mess); } ?>
Но все таки остался вопрос.. Я так понимаю что для отображения большой фотографии при клике по записе на стене. Нужен Flash контейнер для Iframe приложений... Подскажите как его реализовать или где подробно об этом почитать. Ибо с Flash до сегодняшнего дня вообще не работал.
я создал 2 таких скрипта,открываю первый в приложении,но ничего не происходит вообще:(. скрипт не изменял,за исключением своих данных!
может кнопку какую то нужно поместить?
Код: Выделить всё
$post_params['photo'] = '@'.'1305295000_demotiv.jpg'; ///ну тут понятно что это ваша фотка
Re: Загрузка фотографий на сервер вконтакте
Все сделано по примеру. Ничего не менял, за исключением установки имени файла фотки.
Возникает такое ощущение, что curl не получает правильно ответа, поскольку, если полученный адрес сервера ввести в адресной строке браузера, то возвращается и server и hash.
Возникает такое ощущение, что curl не получает правильно ответа, поскольку, если полученный адрес сервера ввести в адресной строке браузера, то возвращается и server и hash.
- boombast1k
- Сообщения: 332
- Зарегистрирован: 23 июн 2011, 07:31
Re: Загрузка фотографий на сервер вконтакте
igor_ch может тебе еще надо id свой поставить? или ты так и сделал?
Re: Загрузка фотографий на сервер вконтакте
boombast1k писал(а):что вот тут обозначает @?
http://php.net/manual/en/function.curl-setopt.phpCURLOPT_POSTFIELDS
The full data to post in a HTTP "POST" operation. To post a file, prepend a filename with @ and use the full path.