هل هناك أي طريقة لإلقاء نظرة خاطفة على ملف أثناء التحميل من خلال HTTP على مربع Windows؟

StackOverflow https://stackoverflow.com/questions/2479390

سؤال

أحتاج إلى إضافة وظيفة تحميل الملف إلى موقع ويب ASP.NET وأرغب في قراءة جزء صغير من الملف على الخادم بينما لا يزال يتم تحميله. وظيفة نظرة خاطفة أو معاينة حتى أتمكن من تحديد المحتويات وإعطاء بعض التعليقات للمستخدم أثناء التحميل (نحن نتحدث عن ملفات كبيرة هنا). هل هناك أي طريقة للقيام بذلك؟ أفكر في أسوأ حالة في كتابة عنصر تحكم مخصص يتم تحميله فقط عدد ثابت من بايت الملف بمجرد اختياره ثم يبدأ تحت الأغطية تحميلًا آخر للملف الكامل. لست متأكدًا تمامًا حتى هذا ممكن ، لكنني أبحث عن حل أكثر أناقة على أي حال ... شكرًا!

هل كانت مفيدة؟

المحلول

يبدو أنك تريد تجنب "الشاشة البيضاء للموت" أثناء تحميلات الملفات الكبيرة. إذا كان الأمر كذلك ، فقد ترغب في النظر إلى التحكم في Telerik's Radupload ، والذي يوفر شريط التقدم أثناء التحميل.

إذا كنت تريد أن تدور حولها ، فسوف أقوم بإلغاء تجميع نسختهم التجريبية للأفكار. لقد نظرت إلى مصدرهم بهذه الطريقة ، وهم ينجزون شريط التقدم من خلال مجموعة من httpmodule المخصص و httphandler مع سيطرتهم. يقوم المعالج بتوجيه الملف بطريقة تم بثها بينما توفر الوحدة "في المئة كاملة" المعلومات-أو العكس ؛ لقد مرت بضع سنوات منذ أن نظرت إليها.

تعديل:

حسنًا ... سيكون من الصعب للغاية القيام به ، وقد لا يعمل في متصفح متقاطع ، ولكن يمكن أن يتم ذلك بهذا النهج.

نظرًا لأنه من الممكن تمامًا العمل مع الملف الوارد كدفق كما ذكرت ، يمكنك تحديث بعض الحالة المعالجة المميتة كجزء من معالجة الدفق هذه. إذا لم تقم بمعالجة دفق ، فيجب عليك انتظار تحميل الملف الكامل قبل أن تتمكن من فعل أي شيء به.

المشكلة هي: أثناء تحميل الملف ، لا يمكن أن يكون لديك المزيد من التفاعل المستند إلى HTML. يجب أن يستمر المنشور بلا هوادة أو سيفشل التحميل. يعمل عنصر التحكم الذي قمت بربطه على الإطلاق على الإطلاق لأن معظم المتصفحات تسمح لـ JavaScript بمواصلة تنفيذ صفحة DOM وتحديثها أثناء المنشور.

لذلك من أجل جعل هذا العمل ، يجب عليك تحديث بعض خادم الحالة الموحد أثناء معالجة الملف في httpmodule ، والتي يتم إرسالها مرة أخرى إلى العميل عبر مكالمات xmlhttprequest التي تعالجها httphandler. يجب عليك استخدام JavaScript/DOM Pure لتحديث واجهة المستخدم للمستخدم.

هكذا ، كما قلت ، إنه معقد ومن المحتمل أن يكون متصفحًا عبر الدواب ، ولكن يمكن أن يتم ذلك نظريًا.

هناك أهل قد يكونون أكثر استقرارًا ، ولكن قد لا يكون ذلك ممكنًا بالضرورة: يمكنك إنشاء عنصر تحكم ActiveX أو تطبيق .NET النقر الذي يقوم بالمعالجة المسبقة للملف قبل التحميل ، وربما حتى ينقل الملف بشكل متزامن أثناء استمرار المستخدم التصفح. قد لا يحب بعض المستخدمين هذا الخيار ، ولا أعرف تفاصيل سيناريو النشر الخاص بك ، لكنه خيار.

نصائح أخرى

هناك HTTP HEAD الطريقة ولكن ليس PEEK.

HEAD سوف يعطيك معلومات ورؤوس حول الملف.

بالطبع يمكنك عمل معالج طلب خاص يقوم بأي شيء تريده. ليس عليك العمل مع موارد ثابتة ، يمكنك إنشاء أي استجابة تريدها بشكل ديناميكي.

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