如何在Flash Builder中触发文件上载中的Event.Complete事件

时间:2013-08-05 17:28:12

标签: file-upload flash-builder filereference

文件正在上传,我的ProgessEvent.Progress方法显示100%完成,但我的Event.Complete方法不会触发。我是否必须从服务器发回特定内容?我只是发回成功消息。我没有收到任何错误。

我想我可以在进度方法达到100%时继续。在发送数据并从服务器收到响应后,不应该触发Event.Complete方法吗?

* *更新:我的Event.Complete方法出错了。

  

TypeError:错误#1034:类型强制失败:无法将flash.events::Event@1277971f1转换为flash.events.DataEvent。

* 我通过将onLoadComplete(event:DataEvent)方法更改为onLoadComplete(event:Event)来解决问题。错误消失了,我的方法现在正在解雇。当系统允许我时,我会回答我自己的问题。

相关代码如下:

fileRef = new FileReference();  
fileRef.addEventListener(Event.SELECT, onFileSelected);
fileRef.addEventListener(Event.COMPLETE, onUploadComplete);
fileRef.addEventListener(ProgressEvent.PROGRESS,onUploadProgress);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, onUploadError);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadError);

private function onUploadProgress(event:ProgressEvent):void {
    status = ((event.bytesLoaded * 100) / event.bytesTotal).toString(); 

}

private function onUploadComplete(event:DataEvent): void {
    status = "Complete";
}

private function onUploadError(event:Event):void {
    if (event is IOErrorEvent) {
        Alert.show((event as IOErrorEvent).text.toString());
    } else if (event is SecurityErrorEvent) {
        Alert.show((event as SecurityErrorEvent).text.toString()); 
    } else {
        status = "Unknown error";
    }
}

1 个答案:

答案 0 :(得分:0)

我改变了......

private function onUploadComplete(event:DataEvent):void {
    status = "Complete: "+event.toString();
}

要...

private function onUploadComplete(event:Event):void {
    status = "Complete: "+event.toString();
}

我猜这是因为我没有发回数据,只是一个简单的xml块。希望这有助于其他人。