photos.getWallUploadServer

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

photos.getWallUploadServer

Сообщение Lampy »

подскажите пример работы метода photos.getWallUploadServer или подскажите как он работает. А то прочитанная документация самого контакта меня не просветила(
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: photos.getWallUploadServer

Сообщение Lampy »

вот нашел как бы пример, но не понятно, что, откуда и куда
http://flapps.ru/forum/post48273.html?h ... ver#p48273
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: photos.getWallUploadServer

Сообщение Lampy »

вот такой код сделал, но понятное дело что не работает)

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

package {  import adobe.utils.CustomActions;  import flash.display.Sprite;  import flash.events.DataEvent;  import flash.media.Microphone;  import flash.media.Sound;  import flash.media.SoundChannel;  import flash.media.SoundTransform;  import flash.net.drm.LoadVoucherSetting;  import flash.utils.ByteArray;  import vk.api.MD5;  import flash.net.navigateToURL;  import flash.net.*;  import flash.display.*;  import vk.api.serialization.json.JSON;    import flash.utils.getDefinitionByName;   import flash.text.*;  import vk.APIConnection;  import vk.events.*;  import vk.ui.VKButton;  import flash.display.Loader;  import flash.display.SimpleButton;  import flash.display.Sprite;  import flash.events.Event;      import flash.events.MouseEvent;  import flash.net.URLRequest;        /**     * ...     * @author Lampy     */    public class Main extends Sprite     {        private var flashVars: Object = stage.loaderInfo.parameters as Object;        private var VK: APIConnection = new APIConnection(flashVars);                private var mll:MultipartURLLoader = new MultipartURLLoader();        private var pictureBytaArray:ByteArray = new ByteArray();                                public function Main():void         {            if (stage) init();            else addEventListener(Event.ADDED_TO_STAGE, init);        }                private function init(e:Event = null):void         {        var btn:VKButton = new VKButton('qqqqqqqqQQqqqq');        addChild(btn);        btn.addEventListener(MouseEvent.CLICK, onclics);                                     }                private function onclics (e:MouseEvent) : void {                    VK.api('photos.getWallUploadServer',{ uid:''},responseFromServers);             }                private function responseFromServers(datas:Object) :void        {                        mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);            mll.addFile(pictureBytaArray, "http://kittenscati.ucoz.ru/_ph/1/680958075.jpg", "file1", 'image/jpg');            mll.load(datas.upload_url);                    }                private function onUploadCompleteThroughAlarm(e:Event) :void            {            var answer:String = mll.loader.data;            var data:Object = JSON.decode(answer);             VK.api('photos.saveWallPhoto', {uid: '', server:data.server, photo:data.photo, hash:data.hash }, onSaveWallPhoto);                        }                                private function onSaveWallPhoto (e:Event) :void {                                                        }                   }    }
Lampy
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:09

Re: photos.getWallUploadServer

Сообщение Lampy »

код сейчас выглядит так

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

package {  import adobe.utils.CustomActions;  import flash.display.Sprite;  import flash.events.DataEvent;  import flash.geom.Matrix;  import flash.media.Microphone;  import flash.media.Sound;  import flash.media.SoundChannel;  import flash.media.SoundTransform;  import flash.net.drm.LoadVoucherSetting;  import flash.utils.ByteArray;  import ru.inspirit.image.encoder.JPGEncoder;  import vk.api.MD5;  import flash.net.navigateToURL;  import flash.net.*;  import flash.display.*;  import vk.api.serialization.json.JSON;      import flash.utils.getDefinitionByName;   import flash.text.*;  import vk.APIConnection;  import vk.events.*;  import vk.ui.VKButton;  import flash.display.Loader;  import flash.display.SimpleButton;  import flash.display.Sprite;  import flash.events.Event;      import flash.events.MouseEvent;  import flash.net.URLRequest;        /**     * ...     * @author Lampy     */    public class Main extends Sprite     {        private var flashVars: Object = stage.loaderInfo.parameters as Object;        private var VK: APIConnection = new APIConnection(flashVars);                private var mll:MultipartURLLoader = new MultipartURLLoader();        private var pictureBytaArray:ByteArray = new ByteArray();                const IMAGE_URL:String = "http://www.helpexamples.com/flash/images/logo.png";        private var ldr:Loader = new Loader();        private var bitmap1:Bitmap;                    private var fl_Loader = new Loader();                public function Main():void         {            if (stage) init();            else addEventListener(Event.ADDED_TO_STAGE, init);        }                private function init(e:Event = null):void         {        var btn:VKButton = new VKButton('qqqqqqqqQQqqqq');        addChild(btn);        btn.addEventListener(MouseEvent.CLICK, onclics);                fl_ClickToLoadUnloadSWF();        ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);        ldr.load(new URLRequest(IMAGE_URL));        }                private function fl_ClickToLoadUnloadSWF():void            {                fl_Loader.load(new URLRequest('http://adena-shop.ru/result1/1.png'));        fl_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawImage2);            }                     private function drawImage2(event:Event): void             {        var mySprite:Sprite = new Sprite();        var myBitmap:BitmapData = new BitmapData(fl_Loader.width, fl_Loader.height, false);           myBitmap.draw(fl_Loader, new Matrix());        var jpgEncoder:JPGEncoder = new JPGEncoder(100);        pictureBytaArray = jpgEncoder.encode(myBitmap);            }                        private function ldr_complete(evt:Event):void {                var bmp:Bitmap = ldr.content as Bitmap;                 bitmap1 = new Bitmap(bmp.bitmapData);                }                  private function onclics (e:MouseEvent) : void {                    VK.api('photos.getWallUploadServer',{ uid:''},responseFromServers);             }                private function responseFromServers(datas:Object) :void        {                        mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);            mll.addFile(pictureBytaArray, "file.jpg", "file1", 'image/jpg');            mll.load(datas.upload_url);                    }                private function onUploadCompleteThroughAlarm(e:Event) :void            {            var answer:String = mll.loader.data;            var data:Object = JSON.decode(answer);             VK.api('photos.saveWallPhoto', {uid: '', server:data.server, photo:data.photo, hash:data.hash }, onSaveWallPhoto);                        }                                private function onSaveWallPhoto (e:Event) :void {                                                        }                   }    }
Koval
ЗАБАНЕН!
Сообщения: 51
Зарегистрирован: 17 апр 2013, 15:26

Re: photos.getWallUploadServer

Сообщение Koval »

vk.com/dev/photos.getWallUploadServer
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: photos.getWallUploadServer

Сообщение Glango »

Если нужно загрузить фото на стену из флэш, то я использовал такой код

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

   //Сначала нужно узнать адрес для загрузки на сервер private function getURLPhoto():void {    var id:String = '';// - Ид пользователя, куда будешь загружать фотку, если загружаешь в группу, то там нужно вместо    //user_id, group_id использовать   // Apiconnetction - это VK класс для API    Apiconnetction.api("photos.getWallUploadServer", { user_id:id }, onUrlGetHandler, onUrlErrorGetHandler);} private function onUrlGetHandler(data:Object):void {    //Затем загружаем фотку на этот сервер    makePhoto(data.upload_url);}        private function onUrlErrorGetHandler(data:Object):void { } private function makePhoto(url:String):void {                var bitmap:BitmapData = new BitmapData(600, 600, false);    bitmap.draw(this);//Я делал скриншот для отправки на стену.                var byteArray:ByteArray = PNGEncoder.encode(bitmap);                var uploader:Uploader = new Uploader();// - Uploader это тот же MultipartUploader    uploader.addFile(byteArray, 'mypic.png', 'file1', 'image/png');    uploader.loader.addEventListener(Event.COMPLETE, function(e:Event):void {        var loader:URLLoader = URLLoader(e.target);                var data:Object = JSON.decode(loader.data);        saveWallPhoto(data);        });    uploader.load(url);} private function saveWallPhoto(data:Object):void {        //После загрузки сохраняем ее в фотках пользователя        var id:String = '';     Apiconnetction.api("photos.saveWallPhoto", { user_id: id, photo: data.photo, server: data.server, hash: data.hash }, onPhotoSaveHandler, onPhotoSaveHandlerError);          } private function onPhotoSaveHandlerError(data:Object):void {                                        }                private function onPhotoSaveHandler(data:Array):void {              //И размещаем на стене        //data[0].id - здесь будет ид фотки, типа photoXXXX-XXXX    Apiconnetction.api("wall.post", { message: "Текст", attachments:data[0].id }, wallpost, wallerror);        }                private function wallpost(data):void {                             }        private function wallerror(data):void {             }  
Если что не понятно спрашивай
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: photos.getWallUploadServer

Сообщение add0295 »

Glango, а что такое у нас PNGEncoder.encode() и var uploader:Uploader = new Uploader();
и где их взять
Аватара пользователя
alexandr_ratush
Сообщения: 94
Зарегистрирован: 05 мар 2014, 21:47

Re: photos.getWallUploadServer

Сообщение alexandr_ratush »

PNGEncoder это класс библиотеки https://code.google.com/p/as3corelib/so ... Encoder.as
Uploader - это уже пользовательский класс :D.

Вот тут есть пример работы http://nocens.ru/index.php?newsid=8399
Glango
Сообщения: 26
Зарегистрирован: 26 дек 2012, 21:00

Re: photos.getWallUploadServer

Сообщение Glango »

Uploader сделал копипастом из MultiPartLoadera :D :D
Лень было всю библиотеку подключать. А PNGEncoder - преобразует битмап в массив байтов, если загружаешь с компа рисунок, то можно его и не использовать.
Ответить