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

Допустим вы хотите чтобы пользователь в вашем 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>

Следующий код выполняется когда пользователь нажал на кнопу "поставить фотостатус"
/*cript*/
    // если пользователь авторизован
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;
}
Добавлено: 16 Августа 2013 10:34:13 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...