Загрузка фотографии

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Ответить
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Загрузка фотографии

Сообщение manticore »

Уже мучаюсь много недель над вопросом, как же загрузить в альбом ВКонтакте скришот сделанный в приложении.

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

var bitmap_data:BitmapData = new BitmapData(tiff.width,tiff.height);                bitmap_data.draw(tiff);                var jpgStream:ByteArray;                var encodeJPG:JPGEncoder = new JPGEncoder();                jpgStream = encodeJPG.encode(bitmap_data);                                var _fileContentType:String = 'image/jpeg';                                var mpLoader:MultipartURLLoader = new MultipartURLLoader();                mpLoader.addFile(jpgStream, "photo.jpg", "photo", _fileContentType);                mpLoader.load(param1.upload_url);                mpLoader.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
Пытаюсь таким кодом сделать скриншот, но ответ по прежнему photo_list:""

Возможно кто-то знает как загрузить или кому не жалко поделитесь своим кодом, как вы сохраняете в альбом скриншот.

Поможет любой код, хотя бы загрузки с адреса или через PHP как-то, ПОМОГИТЕ ПОЖАЛУЙСТА!

Вопрос мучает очень долго. :cry:

Локально сохранить скриншот получается отлично, а загрузить никак.
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Re: Загрузка фотографии

Сообщение manticore »

Решил проблему.
Если кому будет интересно, выложу код. :)
Derial
Сообщения: 65
Зарегистрирован: 07 мар 2012, 17:22

Re: Загрузка фотографии

Сообщение Derial »

Выкладывай!!! ;)
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Re: Загрузка фотографии

Сообщение manticore »

Для начала выполняем получение альбома и адреса для загрузки, этот код уже выкладывать не буду.
Далее делаем скриншот и пользователь должен подтвердить что хочет загрузить фотографию:

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

public function podtverzdeniezagruski(param1:Object) : void        {            if (!param1.error_msg)            {                                var bitmap_data:BitmapData = new BitmapData(tiff.width,tiff.height);                bitmap_data.draw(tiff);                var encodeJPG:JPEGEncoder = new JPEGEncoder(100);                dataimg = encodeJPG.encode(bitmap_data);                                serverphoto = param1.upload_url;                                Alert.show("Все готово для загрузки, сохраняем?", "Сохранение фото в альбом", Alert.YES, null, zagruzkaphoto);                            }        }
Делаем загрузку фотографии:

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

public function zagruzkaphoto(event:CloseEvent) : void        {            Security.allowDomain("*");                        var loader:MultipartURLLoader = new MultipartURLLoader();            loader.addFile(dataimg, "photo.jpg", "file1");            loader.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);            loader.load(serverphoto);                    }
Сохраняем фотографию:

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

public function onUploadCompleteThroughAlarm(event:Event) : void        {            var data:Object = JSON.decode(event.currentTarget.loader.data);            VS.api("photos.save", {aid:albumaid, server:data.server, photos_list:data.photos_list, hash:data.hash}, zagruzkaokalert, zagruzkaokalert);        }
Далее выводим ответ: (он сомнительно работает, пока не понял почему)

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

public function zagruzkaokalert(event:Event) : void        {                        var data:Object = JSON.decode(event.currentTarget.loader.data);                        if (!data.error_msg)            {                if (data.response.pid > 0)                {                    Alert.show("Фото успешно добавлено в альбом");                }                else                {                    Alert.show("Фото не добавилось");                }            }        }
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Загрузка фотографии

Сообщение Alazaur »

Далее выводим ответ: (он сомнительно работает, пока не понял почему)
Попробуйте так:

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

    public function zagruzkaokalert(data:Object) : void            {                if (!data.error_msg)                {                    if (data.response[0].pid > 0)                    {                        Alert.show("Фото успешно добавлено в альбом");                    }                    else                    {                        Alert.show("Фото не добавилось");                    }                }            }
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Re: Загрузка фотографии

Сообщение manticore »

Alazaur
Что-то не помогло, не выводит ни одну из надписей, до этого просто

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

public function zagruzkaokalert(data:Object) : void            {                        Alert.show("Фото успешно добавлено в альбом");            }
Выводило.

Получается проблемы с error_msg, не может определить, есть или нет его?
Фотография добавилась и в Charles написан pid > 0.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: Загрузка фотографии

Сообщение Alazaur »

manticore, это я загнался, здесь же флэш,а не javaScript. Вместо

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

data.response[0].pid
надо смотреть просто

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

data[0].pid
А на счет data.error_msg. Все же лучше не указывать одну и ту же функцию, как для обработки ошибок, так и для успешного выполнения. Создайте одну функцию, которую и указывайте в качестве обработчика ошибок во всех вызовах API. Тогда вы сможете убрать проверку на data.error_msg как в функции podtverzdeniezagruski так и в zagruzkaokalert. И код чище станет :)
Аватара пользователя
manticore
Сообщения: 119
Зарегистрирован: 08 дек 2012, 18:53

Re: Загрузка фотографии

Сообщение manticore »

Alazaur
Спасибо, помогло :)
Ответить