Фотостатус - Загрузка фотографий

Готовые уроки IFrame + ВКонтакте API

Фотостатус - Загрузка фотографий

Сообщение redasar » 09 апр 2012, 08:47

Допустим вы хотите чтобы пользователь в вашем iFrame-приложении мог поставить фотостатус. (Например вы делаете приложение по работе с фотографиями, открытками и прочими свистоперделками). Что же такое этот фотостатус? Это обычная картинка порезанная на 4/5 частей. Как выделять, уменьшать и разрезать изображения средствами PHP я полагаю никому рассказывать не надо (библиотека GD в PHP + в качестве визуального редактора я использовал плагин для jquery imgareaselect).

Итак ситуация. после обработки у нас есть 4 нарезанных фотки + целый оригинал.
Задача - загрузить это добро на страничку пользователю в новый фотоальбом чтобы при этом в списке миниатюр последних загруженных фоток были только 4 эти кусочка в нужном порядке.

Выкладываю только основные элементы кода.
для работы приложения нам необходимы jquery (по желанию) и VK Open API
  1.  
  2. <script src="js/jquery.js"></script>
  3. <script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript"></script>
  4.  


Следующий код выполняется когда пользователь нажал на кнопу "поставить фотостатус"
  1.  
  2. /*javascript*/
  3.     // если пользователь авторизован
  4. VK.Auth.getLoginStatus(function(response) {
  5.         // берем его id
  6.     var id = response.session.mid;
  7.         // вытаскиваем список всех альбомов
  8.     VK.Api.call('photos.getAlbums', {}, function(data){
  9.         if(data.response){
  10.         data = data.response;
  11.         //перебираем все альбомы на предмет наличия нашего альбома
  12.         for(el in data){
  13.             if(data[el].title=='Имя_альбома'){
  14.             aid = data[el].aid;}
  15.         }
  16.         // если наш альбом не найден
  17.         if(!aid){
  18.         //создаем новый
  19.         VK.Api.call('photos.createAlbum', {title: 'Имя_альбома',privacy: '0', comment_privacy: '0',description: 'блаблабла'}, function(adata){
  20.             if(adata.response) {
  21.                 ldata = adata.response;
  22.                 // берем id альбома
  23.                 aid = ldata.aid;
  24.                 //загружаем фотки в альбом в следующем порядке - сначала оригинал,
  25.                 //потом все кусочки по порядку начиная с последнего
  26.                 uploadimg(aid,'original.jpg','03.jpg','02.jpg','01.jpg','00.jpg');
  27.             }else error(data);
  28.         });
  29.                 }else{// такой альбом уже есть
  30.                         // загружаем фотки
  31.                         uploadimg(aid,'original.jpg','03.jpg','02.jpg','01.jpg','00.jpg');
  32.                     }
  33.         }else error(data);
  34.                 }); })
  35.  


Функция uploadimg.
  1.  
  2. /*javascript*/
  3. // aid - id альбома
  4. //image1 - целый оригинал
  5. //image2-image5 кусочки
  6. function uploadimg(aid,image1,image2,image3,image4,image5){
  7.     VK.Api.call('photos.getUploadServer', {'aid':aid}, function(data){
  8.         if(data.response) {
  9.         data = data.response;
  10.         //upload_url - адрес для загрузки фотографий на сервер вконтакта
  11.         var upload_url = data.upload_url;
  12.         // отправляем POST запрос на php файл, который в свою очередь с помощью
  13.         $.post('upload.php' ,{upload:upload_url,foto1:image1,foto2:image2,foto3:image3,foto4:image4,foto5:image5},function(json){
  14.             if(json.server) {
  15.             // если загрузка прошла успешно сохраняем загруженные фотографии
  16.             VK.Api.call('photos.save', {'aid':aid,'server':json.server,'photos_list':json.photos_list,'hash':json.hash}, function(data){
  17.             if(data.response){
  18.             alert('Фотостатус сохранен! ');
  19.             }
  20.         });
  21.                 }else error(json);
  22.         // обратите внимание что тип принимаемых данных от upload.php в формате json      
  23.             },'json');
  24.         }else error(data);
  25.     });
  26. }
  27.  


upload.php - наше все! :)
можете просто копировать и вставлять
главное помните что в пост запросе ему должны передаваться следующие параметры:
1 - ссылка для загрузки файлов на вконтакт
2 - пять фотографий
  1.  
  2. /*php*/
  3. if ($_POST["upload"]) {
  4. // берем полный путь к файлам на сервере
  5.     define('BASEPATH', str_replace('\\', '/', dirname(__FILE__)) . '/');
  6.     $upload_url = $_POST["upload"];
  7. // выставляем параметры для загрузки (полные пути до наших картинок)
  8.     $post_params['file1'] = '@'.BASEPATH.$_POST["foto1"];
  9.     $post_params['file2'] = '@'.BASEPATH.$_POST["foto2"];
  10.     $post_params['file3'] = '@'.BASEPATH.$_POST["foto3"];
  11.     $post_params['file4'] = '@'.BASEPATH.$_POST["foto4"];
  12.     $post_params['file5'] = '@'.BASEPATH.$_POST["foto5"];
  13.  
  14. // курл
  15.     $ch = curl_init();
  16.     curl_setopt($ch, CURLOPT_URL, $upload_url);
  17.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  18.     curl_setopt($ch, CURLOPT_POST, true);
  19.     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
  20.     $result = curl_exec($ch);
  21.     curl_close($ch);
  22. //выводим результат в формате json 
  23.     echo $result;
  24. }
  25.  


На основе этих наработок у меня получилось вот такое приложеньице - http://vk.com/app2886453
По всем вопросам в личку.
По всем более интересным решениям и дополнениям писать в эту тему.
redasar

 
Автор темы
Сообщения: 14
Зарегистрирован: 30 мар 2012, 10:38
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: фотостатус

Сообщение redasar » 09 апр 2012, 08:59

P.S. Таким же образом фотки грузятся на стену.
redasar

 
Автор темы
Сообщения: 14
Зарегистрирован: 30 мар 2012, 10:38
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.

Re: фотостатус

Сообщение Tuinfo » 09 апр 2012, 20:57

Можешь пожалуйста готовый выложить исходник приложения
Tuinfo

 
Сообщения: 9
Зарегистрирован: 29 мар 2012, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Фотостатус - Загрузка фотографий

Сообщение wypaa » 04 авг 2012, 19:34

Напишите полный код пожалуйста
wypaa

 
Сообщения: 63
Зарегистрирован: 26 ноя 2010, 21:21
Благодарил (а): 2 раз.
Поблагодарили: 3 раз.


Вернуться в Уроки IFrame ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron