flex上传文件组件 - 文件引用问题

时间:2010-09-02 04:41:01

标签: flex filereference

以下代码用于名为FileUpload.mxml的组件中,该组件在flex应用程序的两个不同部分中使用。

private var uploadURL:URLRequest = new URLRequest;
private var file:FileReference = new FileReference;
private var media:MediaFacade;

public function browse():void
{
        var uUrl:String=""; // force
        uploadURL=new URLRequest();

        file=new FileReference();
        configureListeners();

        file.browse(getTypes());
}

private function configureListeners():void
{
    file.addEventListener(Event.CANCEL, cancelHandler);
            ...
    if (!Application.application.hasEventListener("uploadFileEvent")) {
        Application.application.addEventListener("uploadFileEvent", uploadFile);
    }
}

当它在第一个实例中使用时,它工作正常,但是当它在不同的部分中使用时,它会从下面的代码中得到以下错误:

错误#2037:以错误顺序调用的函数或之前的调用未成功。

    private function doUploadFile():void
    {
        try
        {
            file.upload(uploadURL);
        }
        catch (e:Error) {
            trace(e.message);
        }
    }

每次都遵循相同的顺序,即file = new FileReference; configureFileListeners(文件); file.browse(); file.upload(uploadURL)但仅适用于正在创建的组件的第一个实例。

任何想法都会受到赞赏。

提前致谢。

安格斯。

2 个答案:

答案 0 :(得分:1)

browse方法只能直接来自“用户互动”事件,例如CLICK事件。如果将它包装在函数或类中,则会发生错误。

答案 1 :(得分:1)

我是Flex的菜鸟,但是从我读过的内容来看:

尝试在.browse()之前调用.cancel()以确保没有事件发生冲突。