Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Работает из под flash не работает в браузере (http://www.flasher.ru/forum/showthread.php?t=123893)

motoroller 14.04.2009 22:00

Работает из под flash не работает в браузере
 
ксть две функции которые декодируют bitmapData в jpeg, потом все эти данные пхаются в один запрос и посылаются серверу...
странная штука когда тестируешь во flash upload происходит, а когда вставляешь на страницу html не идёт и всё тут ...

Код AS3:

function startDecode(number:Number) {
        var curr:Number=number+1;
        loadingMenu(true, "Обработка "+curr+" файла");
        loading.pb.setProgress(0, 100);
        var encoder:JPEGAsyncEncoder = new JPEGAsyncEncoder(100);
        encoder.PixelsPerIteration = 128;
          encoder.addEventListener(JPEGAsyncCompleteEvent.JPEGASYNC_COMPLETE, encodeDone);
          encoder.addEventListener(ProgressEvent.PROGRESS, encodeProg);
          encoder.encode(dp.getItemAt(number).source.bitmapData);       
        dp.getItemAt(number).data.menu = false;
        myTileList.dataProvider = dp;
}
 
function encodeDone(event:JPEGAsyncCompleteEvent):void {
        event.target.removeEventListener(JPEGAsyncCompleteEvent.JPEGASYNC_COMPLETE, encodeDone);
    currloadedFileNumber++;
        var data:ByteArray = event.ImageData;
        UploadPostHelper.attachFile("file_"+currloadedFileNumber+".jpg", data);       
        if(dp.length>currloadedFileNumber)
                startDecode(currloadedFileNumber);
        else {
                loadingMenu(true, "Выгрузка файлов на сервер");
                loading.pb.setProgress(100, 100);
                urlRequest.data = UploadPostHelper.getPostData();
                urlLoader.load(urlRequest);
                urlLoader.addEventListener(Event.COMPLETE, completeLoadFile);
        }


Obi 14.04.2009 22:39

А с безопасностью там что?

ursul 20.11.2009 15:01

Подниму старую тему.

Та же проблема возникла: после модификации изображения производится его отправка на сервер в bytearray через UploadPostHelper. В браузере urlLoader.load(urlRequest) не срабатывает, хотя все отлично работает в дебаге Flash.

Однако, обычный аплоад работает, т.е. FileReference.upload(urlRequest) срабатывает в браузере.

Security.domain прописан, crossdomain.xml есть.

dimarik 20.11.2009 15:41

Цитата:

Сообщение от ursul (Сообщение 867043)
В браузере urlLoader.load(urlRequest) не срабатывает, хотя все отлично работает в дебаге Flash.

Какая ошибка-то появляется?

ursul 20.11.2009 16:02

Появляется SecurityError #2176.

Однако загрузка происходит после нажатия кнопки пользователем. И работает обычная (без предварительной модификации изображения) загрузка в браузере.

Juice_Green 20.11.2009 16:05

значит надо копать в сторону политики безопасности

ursul 20.11.2009 16:09

А чем будет отличаться политика безопасности urlLoader.load() от fileReference.upload() ? Последнее успешно работает в браузере.

dimarik 20.11.2009 16:34

Как- то так.

Цитата:

In Flash Player 10 and later, if you use a multipart Content-Type (for example "multipart/form-data") that contains an upload (indicated by a "filename" parameter in a "content-disposition" header within the POST body), the POST operation is subject to the security rules applied to uploads:
The POST operation must be performed in response to a user-initiated action, such as a mouse click or key press.
If the POST operation is cross-domain (the POST target is not on the same server as the SWF file that is sending the POST request), the target server must provide a URL policy file that permits cross-domain access.
Also, for any multipart Content-Type, the syntax must be valid (according to the RFC2046 standards). If the syntax appears to be invalid, the POST operation is subject to the security rules applied to uploads.

ursul 20.11.2009 16:40

Да, это учтено, я написал выше, что все инициируется нажатием кнопки.
Клик по кнопке -> FileReference.browse() -> Event: select -> Далее два варианта:
  • Модифицируем, если размер больше максимального -> UrlLoader.load()
  • Не модифицируем -> FileReference.upload()

Добавлено через 1 минуту
Если только перед UrlLoader.load() нужно еще одно инициирующее событие от пользователя.. Но это выглядит довольно странно

dimarik 20.11.2009 16:44

Клик по кнопке -> FileReference.browse();
Клик по кнопке -> UrlLoader.load();


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

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