Итак ситуация. после обработки у нас есть 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); }); })
Код: Выделить всё
/*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); });}
можете просто копировать и вставлять
главное помните что в пост запросе ему должны передаваться следующие параметры:
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;}
По всем вопросам в личку.
По всем более интересным решениям и дополнениям писать в эту тему.