Как загрузить фото в альбом на сервер вкотакте.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
komar
Сообщения: 2
Зарегистрирован: 21 ноя 2010, 09:53

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение komar »

Я не просто не понимаю автор пишет
Как загрузить фото в альбом на сервер вкотакте.
Но в какой альбом?! Не упомянут не ID альбома не функции которая его создаёт photos.createAlbum мда...
Foxmen
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Foxmen »

Кто-нибудь сделайте урок по этой теме ,плзз
Foxmen
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Foxmen »

Всем полезно будет
Юнир
Сообщения: 45
Зарегистрирован: 14 дек 2010, 12:17

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Юнир »

А как сохранить снимок объекта в альбом? То есть не через FileReference, а через BitmapData?
Юнир
Сообщения: 45
Зарегистрирован: 14 дек 2010, 12:17

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Юнир »

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

         private function onScreenButClicked(e:MouseEvent):void        {            var _fileData:ByteArray;             var _fileContentType:String = 'image/jpeg';            var codeEx:String = '';        //  var myAID:int = 0;            var myAID:int = 125695945;            if (myAID == 0)            {                codeEx += 'var a=API.photos.createAlbum({"title":"1","comment_privacy":3,"description":"","privacy":3}).aid;' +                    'API.putVariable({"key":1494,"value":a});';            }            else            {                codeEx += 'var a=' + myAID.toString() + ';';            }            codeEx += 'return API.photos.getUploadServer({"aid":a,"save_big":1});';            apiVK.api('execute', { code:codeEx}, function(data: Object):void {                       _upload_url = data['upload_url'].toString();                                var bmd:BitmapData=new BitmapData(800, 600, false); //--создаем bitmapdata                bmd.draw(stage); //--рисуем в битмапе интересующий мувиклип                var bt:Bitmap = new Bitmap(bmd);                addChild(bt);                _fileData = new JPGEncoder(100).encode(bmd);                                var mll:MultipartURLLoader = new MultipartURLLoader();                mll.addEventListener(Event.COMPLETE, function(event:Event):void {                    event.currentTarget.removeEventListener(event.type, arguments.callee);                    savePhotos(parseServerAck(event.currentTarget.loader.data as String));                });                         mll.addFile(_fileData, "file.jpg", "file1", _fileContentType);                mll.load(_upload_url);                            }, onApiRequestFail);                                                   }         private function parseServerAck(serverAck:String):* {            var result:* = new Object;            for each(var pair:String in serverAck.split(/\s*[{},]\s*/)) {                var tmp:Array = pair.split(/\s*[:"]\s*/);//" это только тут я добавил, чтоб все красным цветом не было                if (  (tmp[1] == "server")                    || (tmp[1] == "photos_list")                    || (tmp[1] == "aid")                    || (tmp[1] == "hash")) {                    result[tmp[1]] = tmp[4];                }            }            return result;                  }        private function savePhotos(serverAck:*):void {                 var variables:URLVariables = new URLVariables;            for(var key:String in serverAck) {                variables[key] = serverAck[key];            }            savePhotosVk(variables.aid, variables.server, variables.photos_list, variables.hash);        }                private function savePhotosVk(this_aid:Number, this_server:String, this_photos_list:String, this_hash:String):void {            console.appendText( this_aid.toString() + ' ,server: ' + this_server + ' ,phlst: ' + this_photos_list + ' ,hash: ' + this_hash + '\n');            apiVK.api('savePhotos',{ aid:this_aid, server:this_server, photos_list:this_photos_list, hash:this_hash},function(data:Object):void{}, onApiRequestFail);                        }                private function onApiRequestFail(data: Object): void {            console.appendText("Error: "+data.error_msg+"\n");            trace(data);        }  
Получаю в консоли
125695945 ,server: 11384 ,phlst: 305e374818 ,hash: 1250946ea6636193e***********
Error: Invalid hash
Звездочки я сам поставил
Юнир
Сообщения: 45
Зарегистрирован: 14 дек 2010, 12:17

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Юнир »

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

_fileData = new JPGEncoder(100).encode(bmd);
Проблема тут! При преобразовании _fileData.toString() выходит
Wb
Аватара пользователя
Евгений
FL Team
FL Team
Сообщения: 776
Зарегистрирован: 10 июн 2010, 11:01

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Евгений »

BANAN писал(а):Думаю исходник сильно не поможет, главное идею понять. Тут все написано http://help.adobe.com/ru_RU/AS3LCR/Flas ... mpleteData
Ну а код я уже выше привел, вот такойже код, но с соответствующими дополнениями

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

 private var file:FileReference;//наш файл с изоброжениемprivate var url_loader:URLLoader;private var url_request:URLRequest;private var upload_url:* = null;private var button1:* = null;private var rq:URLRequest = null; button1 = VK.createRoundButton( "loade", 10, 200 ); //кнопка для выбора фотоmenu_item.panel.addChild( button1 );button1.addEventListener( MouseEvent.CLICK, onSelectFile ); private function onSelectFile( e:MouseEvent ):void{       load_Photo("ID албома");    file = new FileReference();    file.browse();    file.addEventListener( Event.SELECT, selectHandler );    file.addEventListener( DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler );} private function selectHandler( e:Event ):void{   file.upload( rq, "file1" );} private function uploadCompleteDataHandler( e:DataEvent ):void{     var data: Object = JSON.decode(e.data);     var q:* = api.savePhotos(data.aid, data.server, data.photos_list, data.hash);//третий шаг, сохраняем фото, передав полученные данне     url_request=new URLRequest(q);     url_loader=new URLLoader();     url_loader.addEventListener(Event.COMPLETE, photoSave);     url_loader.load(url_request);} private function load_Photo(aid:*):void{    query=api.getPhotosUploadServer(aid);//первый шаг по загрузке файла, получаем url    url_request=new URLRequest(query);    url_loader=new URLLoader();    url_loader.addEventListener(Event.COMPLETE, photoLoaded);    url_loader.load(url_request); }        private function photoLoaded(e:Event):void{   var responsePhoto:XML = new XML(url_loader.data);   upload_url = responsePhoto.upload_url;   rq = new URLRequest();//второй шаг, формируем POST запрос на полученный url   rq.url = upload_url;   rq.method = URLRequestMethod.POST;   rq.requestHeaders.push( new URLRequestHeader( "Cache-Control", "no-cache" ) );} private function photoSave(e:Event):void{   menu_item.panel.addChild( VK.addText("Фото успешно загружено в альбом", 20, 100 ) );} 
Какие для этого кода нужны библиотеки? может кто поделится?)) Хотя бы названием...
rewad
Сообщения: 62
Зарегистрирован: 17 май 2010, 22:56

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение rewad »

получилось загружать картинки,но как сделать так что бы грузилась картинка не выбранная ,а bytearray загружать,не пойму куда вставить его..?
Foxmen
Сообщения: 80
Зарегистрирован: 03 сен 2010, 19:58

Re: Как загрузить фото в альбом на сервер вкотакте.

Сообщение Foxmen »

после вызова photos.getUploadServer возврашает Access denied
Приложению разрешенны ВСЕ действия и альбом виден всем
Из-за чего такое мб?
Ответить