В конечном итоге это то, что сработало для меня.Я изменил свой веб-сервис, чтобы принимать поток байтов вместо составного файла.Затем я использовал URLLoader
для загрузки байтов в сервис.
private var fileReference:FileReference;
public function loadFile()
{
fileReference.addEventListener(Event.COMPLETE, fileLoaded);
fileReference.load();
}
private function fileLoaded(evt:Event):void{
fileReference.removeEventListener(Event.COMPLETE, fileLoaded);
startUpload();
}
public function startUpload():void {
var xml:String = // xml to post along with the file ;
var url:String = // url to the web service
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(fileReference.name);
bytes.writeUTFBytes(xml);
bytes.writeBytes(fileReference.data);
bytes.position = 0;
var urlLoader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest(url);
request.data = bytes;
request.method = URLRequestMethod.POST
request.contentType = "application/octet-stream";
urlLoader.addEventListener(Event.COMPLETE, uploadComplete);
urlLoader.addEventListener(flash.events.IOErrorEvent.IO_ERROR, uploadError);
urlLoader.load(request);
}
private function uploadComplete(e:Event):void {
// handle success
}
private function uploadError(e:Event):void {
// handle failure
}