FileReference:加载Windows锁定文件

Mic*_*vis 7 apache-flex windows flash actionscript-3 filereference

我在Windows上使用Flash在Flash Player 10中,FileReference用于将文件加载到内存中,如下所示.

我的问题是,当一个文件被Windows锁定时,我FileReference没有给我任何关于该文件无法访问的反馈 - 它在调用之后根本不会发送任何事件load().

有没有人知道如何判断Flash Player无法打开文件?

var fileReference:FileReference = new FileReference();

private function onClick():void {
    fileReference = new FileReference();
    fileReference.addEventListener(Event.SELECT, onSelect);
    fileReference.addEventListener(Event.COMPLETE, onComplete);

    fileReference.addEventListener(Event.CANCEL, onOther);
    fileReference.addEventListener(IOErrorEvent.IO_ERROR, onOther);
    fileReference.addEventListener(ProgressEvent.PROGRESS, onOther);
    fileReference.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onOther);
     // I've tried adding all of the other declared events 
     // for FileReference here as well

    fileReference.browse();
}

private function onSelect(event:Event):void {
    trace(fileReference.name);

    try {
        fileReference.load();
    } catch (e:Error) {
        trace(e);
    }
}

private function onComplete(event:Event):void {
    trace(fileReference.data.length);
}

private function onOther(event:Event):void {
    trace("other:" + event.toString());
}
Run Code Online (Sandbox Code Playgroud)

Zed*_*d-K 2

一个可能的(肮脏的)解决方法可能是等待 - 比方说 - 10 秒,并假设如果没有事件触发则文件不可用。

使用 a setTimeout(并clearTimeout在您的COMPLETE事件*_ERROR处理程序中清除它)可能会成功。

不过,如果有人能提出更好的解决方案,我会很高兴。


编辑:当然,您可能想监听HTTP_STATUS事件(等待 202 答案 - 如果我正确理解了本文档)而不是等待COMPLETE*_ERROR