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

Готовые уроки IFrame + ВКонтакте API
Ответить
redasar
Сообщения: 14
Зарегистрирован: 30 мар 2012, 10:38

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

Сообщение redasar »

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

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

Выкладываю только основные элементы кода.
для работы приложения нам необходимы jquery (по желанию) и VK Open API

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

 <script src="js/jquery.js"></script><script src="http://vkontakte.ru/js/api/openapi.js" type="text/javascript"></script> 
Следующий код выполняется когда пользователь нажал на кнопу "поставить фотостатус"

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

 /*javascript*/    // если пользователь авторизованVK.Auth.getLoginStatus(function(response) {        // берем его id     var id = response.session.mid;        // вытаскиваем список всех альбомов    VK.Api.call('photos.getAlbums', {}, function(data){        if(data.response){        data = data.response;        //перебираем все альбомы на предмет наличия нашего альбома        for(el in data){            if(data[el].title=='Имя_альбома'){            aid = data[el].aid;}        }        // если наш альбом не найден        if(!aid){        //создаем новый        VK.Api.call('photos.createAlbum', {title: 'Имя_альбома',privacy: '0', comment_privacy: '0',description: 'блаблабла'}, function(adata){            if(adata.response) {                ldata = adata.response;                // берем id альбома                aid = ldata.aid;                //загружаем фотки в альбом в следующем порядке - сначала оригинал,                 //потом все кусочки по порядку начиная с последнего                uploadimg(aid,'original.jpg','03.jpg','02.jpg','01.jpg','00.jpg');            }else error(data);        });                }else{// такой альбом уже есть                        // загружаем фотки                         uploadimg(aid,'original.jpg','03.jpg','02.jpg','01.jpg','00.jpg');                    }        }else error(data);                }); }) 
Функция uploadimg.

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

 /*javascript*/// aid - id альбома//image1 - целый оригинал//image2-image5 кусочкиfunction uploadimg(aid,image1,image2,image3,image4,image5){    VK.Api.call('photos.getUploadServer', {'aid':aid}, function(data){        if(data.response) {        data = data.response;        //upload_url - адрес для загрузки фотографий на сервер вконтакта        var upload_url = data.upload_url;        // отправляем POST запрос на php файл, который в свою очередь с помощью         $.post('upload.php' ,{upload:upload_url,foto1:image1,foto2:image2,foto3:image3,foto4:image4,foto5:image5},function(json){            if(json.server) {            // если загрузка прошла успешно сохраняем загруженные фотографии            VK.Api.call('photos.save', {'aid':aid,'server':json.server,'photos_list':json.photos_list,'hash':json.hash}, function(data){            if(data.response){            alert('Фотостатус сохранен! ');            }        });                }else error(json);        // обратите внимание что тип принимаемых данных от upload.php в формате json                   },'json');        }else error(data);    });} 
upload.php - наше все! :)
можете просто копировать и вставлять
главное помните что в пост запросе ему должны передаваться следующие параметры:
1 - ссылка для загрузки файлов на вконтакт
2 - пять фотографий

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

 /*php*/if ($_POST["upload"]) {// берем полный путь к файлам на сервере    define('BASEPATH', str_replace('\\', '/', dirname(__FILE__)) . '/');    $upload_url = $_POST["upload"];// выставляем параметры для загрузки (полные пути до наших картинок)    $post_params['file1'] = '@'.BASEPATH.$_POST["foto1"];    $post_params['file2'] = '@'.BASEPATH.$_POST["foto2"];    $post_params['file3'] = '@'.BASEPATH.$_POST["foto3"];    $post_params['file4'] = '@'.BASEPATH.$_POST["foto4"];    $post_params['file5'] = '@'.BASEPATH.$_POST["foto5"]; // курл    $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);//выводим результат в формате json     echo $result;} 
На основе этих наработок у меня получилось вот такое приложеньице - http://vk.com/app2886453
По всем вопросам в личку.
По всем более интересным решениям и дополнениям писать в эту тему.
redasar
Сообщения: 14
Зарегистрирован: 30 мар 2012, 10:38

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

Сообщение redasar »

P.S. Таким же образом фотки грузятся на стену.
Tuinfo
Сообщения: 9
Зарегистрирован: 29 мар 2012, 19:30

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

Сообщение Tuinfo »

Можешь пожалуйста готовый выложить исходник приложения
wypaa
Сообщения: 63
Зарегистрирован: 26 ноя 2010, 21:21

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

Сообщение wypaa »

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