Неожиданное исключение безопасности Flash при использовании URLLoader

Я пытаюсь выполнить загрузку двоичных данных, в частности ByteArray, представляющего изображение PNG, на сервер, используя класс URLLoader в сочетании с URLRequest.

Когда я установилcontentType свойство URLRequest для «multipart / form-data»; вместо значения по умолчанию, вызовurlLoader.load() приводит к исключению безопасности.

Когда я покидаюcontentType По умолчанию это свойство работает нормально, но загрузка файла на сервер занимает много времени (пропорционально длине PNG-файла).

Итак, мой вопрос: ПОЧЕМУ я получаю это исключение безопасности? И как мне этого избежать?

Обратите внимание, что мой SWF обслуживается с сервера разработки, а не с локальной файловой системы (точнее, сервера разработки Google App Engine).

Вот код:

var pngFile:ByteArray = PNGEncoder.encode(bitmapData);

var urlRequest:URLRequest = new URLRequest('/API/uploadImage');

// With this line of code, the call to urlLoader.load() throws the following security exception:
// '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.'
urlRequest.contentType = 'multipart/form-data';

urlRequest.method = URLRequestMethod.POST;
urlRequest.data = pngFile;
urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));

urlLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
urlLoader.addEventListener(Event.COMPLETE, onUploadComplete);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onUploadError);

NextFrame.addCallback(function () {
    urlLoader.load(urlRequest);
});

Ответы на вопрос(3)

Ваш ответ на вопрос