FileReference: Загрузка заблокированного Windows файла

Я использую Flex в Flash Player 10 в Windows, с помощью 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());
}

7
задан Michael Brewer-Davis 8 March 2010 в 20:28
поделиться

1 ответ

Возможный (грязный) обходной путь может заключаться в том, чтобы подождать, скажем, 10 секунд, и предположить, что файл недоступен, если тогда не сработало ни одно событие.

Использование setTimeout (и очистка его с помощью clearTimeout в ваших обработчиках событий COMPLETE и * _ ERROR ) может помочь.

Я буду рад, если кто-нибудь сможет предложить более хорошее решение.


РЕДАКТИРОВАТЬ: Конечно, вы можете захотеть прослушать событие HTTP_STATUS (ожидая ответа 202 - если я правильно понял эту документацию ), а не ждать COMPLETE или * _ ОШИБКА .

2
ответ дан 7 December 2019 в 18:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: