filereerence: تحميل ملف مقفل للنوافذ
-
18-09-2019 - |
سؤال
أنا أستخدم 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
.