سؤال

أنا أستخدم 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());
}
هل كانت مفيدة؟

المحلول

قد يكون هناك حل محتمل (قذرة) هو الانتظار حتى يقول - 10 ثوان، ونفترض أن الملف غير متوفر إذا لم يحدث أي حدث ثم.

باستخدام أ setTimeout (وتطهيرها clearTimeout في الخاص بك COMPLETE و *_ERROR معالجات الأحداث) قد تفعل الخدعة.

سأكون سعيدا إذا كان شخص ما يمكن أن يأتي مع حل أجمل، رغم ذلك.


تحرير: بالطبع قد ترغب في الاستماع إليها HTTP_STATUS حدث (في انتظار الإجابة 202 - إذا فهمت هذه الوثائق بشكل صحيح) بدلا من انتظار COMPLETE أو *_ERROR.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top