Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Никак не загрузить изображение на сервер (http://www.flasher.ru/forum/showthread.php?t=176120)

Фенёк 02.03.2012 15:35

Никак не загрузить изображение на сервер
 
Делаю скриншот, пытаюсь отправить его на сервер

Код AS3:

                public function makeScreenshot(e:MouseEvent):void
                {
                        var raw                        :BitmapData,
                                brr                        :ByteArray;
 
                        raw = new BitmapData(stage.stageWidth, stage.stageHeight);
                        raw.draw(stage);
                        brr = PNGEncoder.encode(raw);
 
                        mpLoader = new MultipartURLLoader();
            mpLoader.addFile(brr, "screenshot.png", "photo", 'image/jpeg');
            mpLoader.addEventListener(Event.COMPLETE, WallSavePhotoPost);
            mpLoader.load(url);
                        trace('Дошли досюда значит заливается')
                }

ошибка на строчке
Код AS3:

raw.draw(stage);

есть вот так:
Код AS3:

 
                        Security.allowDomain("*");
                        var loaderContext:LoaderContext = new LoaderContext();
                        loaderContext.checkPolicyFile = true;

Но все равно
Цитата:

SecurityError: Error #2122: Нарушение изолированной среды: BitmapData.draw
и далее по тексту. Как победить?

Mukon 02.03.2012 16:27

Смотрите тут

-De- 02.03.2012 16:30

Скорее тут

Фенёк 02.03.2012 16:54

Mukon Не, ФайлРеференс не пойдет, мне нужно миновать процедуру сохранения по винт. Делаю приложение для вконтакте, нужно сразу по нажатию сделать пост на стену пользователя.

-De- Не очень понял о чем идет речь. Нашел этот самый доверенный каталог, добавил в файл настроек директорию, скомпилировал. Стало еще круче
Цитата:

Error: You cant load without specifing PATH
at MultipartURLLoader/load()[C:\Users\Ermine\Desktop\kukuruzik\MultipartURLLoader.as:98]
SecurityError: Error #2122: Нарушение изолированной среды: BitmapData.draw: http://cs4435.vk.com/u2162398/4a12a82e059724.zip не может осуществить доступ к http://cs11152.userapi.com/u154412759/b_34d43610.jpg. Необходим файл политики, но, когда были загружены эти мультимедийные данные, флаг checkPolicyFile не был установлен.
Содержимое cfg:
Цитата:

app:
C:\Users\Ermine\Desktop

maxkar 02.03.2012 17:34

Смотрите ниже. -De- дал правильную ссылку. Только там сообщение не с начала страницы. Вот оно.

dimarik 02.03.2012 17:35

-De- вам дал ссылку почитать мои нравоучения.

Фразы "приложение для вконтакте" и "нашел этот самый доверенный каталог" не совместимы в принципе.
Первая относится к песочнице remote, а вторая к песочнице local-trusted.

По поводу Security Error #2122 при BitmapData#draw(): укажите
Код AS3:

const loaderContext:LoaderContext = new LoaderContext(true);

Судя по http://cs11152.userapi.com/crossdomain.xml в нем есть <allow-access-from domain="*.vk.com" to-ports="80"/>, который разрешает пользоваться пикселями изображений при запросе с этих поддоменов.

Или воспользуйтесь советом.

Security.allowDomain("*") никакого отношения к разрешению распространителя, а тем более к изображениям не имеет. Адью!

Фенёк 05.03.2012 11:27

И все же нет
Код AS3:

const loaderContext:LoaderContext = new LoaderContext(true);

так увы и не дал должного результата/

dimarik Смотрю ваш блог вроде бы делаю все тоже самое, но никакого рабочего результата это так и не дает. Что занятно
Код AS3:

                        VK.api('friends.getAppUsers', {}, gotUsers, errorGetUsers);
                        VK.api("photos.getWallUploadServer", {}, responseFromServer, onError);

Если убрать запрос к френдам, все работает как по маслу. Такое впечатление, что один метод "выталкивает" другой...

Добавлено через 24 часа 58 минут
Еще раз просмотрел. Наврал, не заметил

Цитата:

1) Если ваша флешка играется в песочнице REMOTE, то из-за того, что сами загружаемые флешки подгружают в себя флешки с других сайтов, не получится снять скриншот. Если, конечно, внутри последних не прописан правильный Security.allowDomain(). Например, Security.allowDomain("*").
А что делать с картинками?

Я так понял, что косяк возникает из-за того, что на сцену загружены картинки с аватарками пользователей. Как можно обойти?

ЛоадерКонтекст перековырял как только смог.

dimarik 07.03.2012 13:56

Вот минимальный пример, который работает у меня. Публикация вконтакте — "без использования контейнера".

Код AS3:

///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (C) 2012. Dimarik
//
///////////////////////////////////////////////////////////////////////////////
 
package
{
 
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.ErrorEvent;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequest;
import flash.system.LoaderContext;
 
/**
 *  @author                                Dimarik
 *  @version                        1.0
 *  @langversion                3.0
 *  @playerversion                9.0
 *
 */

[SWF(width="100", height="100", frameRate="12", backgroundColor="#3A4044")]
 
public class VKImageLoading extends Sprite {
 
        //-------------------------------------------------------------------------
        //
        //  Constructor
        //
        //-------------------------------------------------------------------------
 
        public function VKImageLoading() {
                super();
                super.addEventListener(Event.ADDED_TO_STAGE, this.initialize, false, int.MAX_VALUE);
        }
 
 
        //-------------------------------------------------------------------------
        //
        //  Private methods
        //
        //-------------------------------------------------------------------------
 
        private function initialize(event:Event):void {
                super.stage.scaleMode = StageScaleMode.NO_SCALE;
                super.stage.align = StageAlign.TOP_LEFT;
 
                const request:        URLRequest = new URLRequest('http://cs11152.userapi.com/u154412759/b_34d43610.jpg');
                const loader:        Loader = new Loader();
                const context:        LoaderContext = new LoaderContext(true);
                this.dealLoaderInfoListeners(loader.contentLoaderInfo.addEventListener);
                loader.load(request, context);
 
                super.addChild(loader);
        }
 
        private function dealLoaderInfoListeners(method:Function):void {
                method.call(null, Event.COMPLETE,                                                this.handler_loader);
                method.call(null, IOErrorEvent.IO_ERROR,                                this.handler_loader);
                method.call(null, SecurityErrorEvent.SECURITY_ERROR,        this.handler_loader);
        }
 
        //-------------------------------------------------------------------------
        //
        //  Events handlers
        //
        //-------------------------------------------------------------------------
 
        private function handler_loader(event:Event):void {
                const li:LoaderInfo = event.target as LoaderInfo;
                this.dealLoaderInfoListeners(li.removeEventListener);
                const loader:Loader = li.loader;
 
                if (event is ErrorEvent)
                        throw event.toString();
                else
                        // выбрасывает SecurityError, если доступ запрещен политиками crossdomain.xml
                        const content:DisplayObject = loader.content;
 
        }
 
}
}


Фенёк 12.03.2012 11:41

Вложений: 1
Есть, нашел косяк, большущее спасибо ) Пропустил, что контекст надо указывать во время load и вообще не в тот класс смотрел ) Еще раз тысячу благодарностей )

Чтобы не потерялось залью сюда, вдруг кому пригодится )


Часовой пояс GMT +4, время: 21:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.