7

以下のように、Windows の Flash Player 10 で Flex を使用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());
}
4

1 に答える 1

2

考えられる (汚い) 回避策は、たとえば 10 秒間待機し、その時点でイベントがトリガーされていない場合はファイルが利用できないと想定することです。

を使用する(およびイベント ハンドラーでsetTimeoutそれをクリアする) とうまくいく場合があります。clearTimeoutCOMPLETE*_ERROR

誰かがより良い解決策を思い付くことができれば幸いです。


編集:もちろん、またはを待つのではなく、HTTP_STATUSイベントをリッスンすることもできます(202の回答を待つ-このドキュメントを正しく理解していれば) 。COMPLETE*_ERROR

于 2010-03-12T13:46:40.563 に答える