Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Множественная загрузка. URLLoader и SecurityError #2176 (http://www.flasher.ru/forum/showthread.php?t=174053)

olexandr 17.01.2012 03:27

Множественная загрузка. URLLoader и SecurityError #2176
 
Всем привет.

Банальная проблема, которая возникала у многих, но решения в Google и на нашем форуме не нашел.
Может быть, кто-то знает решение проблемы или предложит другой вариант реализации.

Имеется загрузчик фотографий. Загружаем, обрабатываем и отправляем. Первая фотка уходит нормально, поскольку отправляется в следствии MouseEvent'а. А вот со второй фоткой начинаются проблемы:
Цитата:

SecurityError: Error #2176: Certain actions, such as those that display a pop-up window, may only be invoked upon user interaction, for example by a mouse click or button press.
Код, в общем-то, банальный:
Код AS3:

var _name:String = _names[_iterator];
var _bytes:ByteArray = _bytes[_iterator] as ByteArray;
 
var _vars:URLVariables = new URLVariables();
_vars[...] = ...;
 
var _request:URLRequest = new URLRequest(Config.URL_UPLOAD);
_request.method = URLRequestMethod.POST;
_request.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
_request.data = UploadPostHelper.getPostData(_name, _bytes, _vars);
_request.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
 
_loader.load(_request);

Есть решение моей проблемы или нет? Подозреваю, что нет.
Тогда возникает другой вопрос - может быть имеет смысл отправлять все за одну итерацию?
Объединить все ByteArray в один? Или может быть, можно отправить массив ByteArray'ев?

i.o. 17.01.2012 13:31

http://stackoverflow.com/questions/1...sing-urlloader

olexandr 17.01.2012 15:16

Я видел этот пример, но не разобрался. Что конкретно мне отуда нужно взять?

и
Код AS3:

new URLRequestHeader('Content-type', 'multipart/form-data');

, и
Код AS3:

new URLRequestHeader('Content-type', 'application/octet-stream');

я пробовал добавлять к своему методу. Это не помогло...

i.o. 17.01.2012 16:26

Цитата:

It could be possible that contentType does not refer to what data you send, but to what data you receive. Try to set the requestHeaders, that should work:
Код AS3:

urlRequest.requestHeaders.push(new URLRequestHeader('Content-type', 'multipart/form-data'));

Другими словам, не трогайте _request.contentType

olexandr 18.01.2012 14:37

вроде все заработало. спасибо!

окончательный вариант:
Код AS3:

var _request:URLRequest = new URLRequest(Config.URL_UPLOAD);
_request.method = URLRequestMethod.POST;
_request.data = UploadPostHelper.getPostData(_name, _bytes, _vars);
_request.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
_request.requestHeaders.push(new URLRequestHeader('Content-type', 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary()));

+ были проблемы с crossdomain.xml. в итоге, как нагуглил на одном из сайтов посоветовали воспользоваться этим кроссдомейном.


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

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