FileReference:加载一个Windowslocking的文件

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

我的问题是,当一个文件被Windowslocking,我的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()); } 

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

使用setTimeout (并在清除和*_ERROR事件处理程序清除它)可能会做的伎俩。

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

编辑:当然,你可能想听HTTP_STATUS事件(等待202答案 – 如果我正确理解这个文档 ),而不是等待COMPLETE*_ERROR