كيف يمكنك السماح بتحميل ملفات متعددة على شبكة إنترانت داخلية لمصادقة النوافذ؟

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

سؤال

لدي بضعة حلول، لكن لا أحد منهم يعمل بشكل مثالي.

منصة

  1. أسب.نت/فب.نت/.نت 2.0
  2. إيس 6
  3. IE6 (في المقام الأول)، مع بعض IE7؛فايرفوكس ليس ضروريا، ولكنه مفيد

خيارات الطرف الثالث المسموح بها

  1. فلاش
  2. ActiveX (أرغب في تجنبه)
  3. جافا (أود تجنبها)

المحاولات الحالية

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

برنامج رفع الفلاش:لقد اكتشفت اثنين من عناصر التحكم في تحميل Flash التي تستخدم ملف فلاش 1x1 ليكون بمثابة القائم بالتحميل، ويمكن الاتصال به بواسطة جافا سكريبت.(أحد هذه التحكم هو تحميل فانسي, ، آخر هو برنامج تحميل الملفات المتعددة من Dojo, ، وآخر هو واحد من قبل darick_c في CodeProject.) لقد أثارني هذا الأمر، ولكن سرعان ما واجهت مسألتين:

  1. سوف يقوم Flash 10 بتعطيل الوظيفة المستخدمة لاستدعاء مربع حوار تحميل الملفات المتعددة.الحل البديل هو استخدام إطار فلاش شفاف، أو مجرد استخدام زر فلاش لاستدعاء مربع الحوار.هذه ليست صفقة كبيرة.
  2. لا يتم استخدام مصادقة Windows المدمجة المستخدمة على شبكتنا الداخلية عندما يحاول ملف Flash تحميل الملفات، مما يطالب المستخدم بتقديم بيانات الاعتماد.الحل البديل لذلك هو استخدام جلسات بدون ملفات تعريف الارتباط، والتي ستكون بمثابة كابوس لمشروعنا لعدة أسباب أخرى.

برنامج تحميل جافا:لقد لاحظت وجود العديد من برامج تحميل الملفات المتعددة المستندة إلى Java، ولكن يبدو أن معظمها يكلف أموالاً.إذا وجدت واحدة تعمل بشكل جيد حقًا، فيمكنني الترتيب لشرائها.أفضل أن لا أفعل ذلك.كما أنني لا أحب مظهر معظمهم.لقد أحببت FancyUpload لأنه يتفاعل مع html/javascript حتى أتمكن من تصميمه وإدارته بسهولة بالطريقة التي أريدها.

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

دقة

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

إذن السؤال هو:هل هناك طريقة لحل المشكلات الموضحة أعلاه أم أن هناك حلًا مختلفًا لم أذكره ويحقق نفس الهدف؟

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

المحلول 5

@davidinbcn.myopenid.co:هذا هو الأساس كيف قمت بحل هذه المشكلة.ولكن، في محاولة لتقديم إجابة أكثر تفصيلاً، أقوم بنشر الحل الخاص بي هنا.

الحل!

قم بإنشاء تطبيقين ويب أو موقع ويب أو أي شيء آخر.

التطبيق أ هو تطبيق ويب بسيط.الغرض من هذا التطبيق هو تلقي تحميلات الملفات وحفظها في المكان المناسب.قم بإعداد هذا كوصول مجهول مسموح به.ثم قم بإنشاء صفحة ASPX واحدة تقبل الملفات المنشورة وتحفظها في موقع معين.(أنا أفعل هذا على الإنترانت.قد تعرض مواقع الإنترنت نفسها لمشاكل أمنية من خلال القيام بذلك.اتخذ احتياطات إضافية إذا كان هذا هو الحال.) سيبدو الكود الموجود خلف هذه الصفحة كما يلي:

Dim uploads As HttpFileCollection = HttpContext.Current.Request.Files
If uploads.Count > 0 Then
    UploadFiles(uploads)
Else
    result = "error"
    err = "File Not Uploaded"
End If

التطبيق ب هو موقعك الأساسي الذي سيسمح بتحميل الملفات.قم بإعداد هذا كتطبيق ويب معتمد لا يسمح بالوصول المجهول.بعد ذلك، ضع تحميل فانسي (أو حل مشابه) على إحدى صفحات هذا الموقع.قم بتكوينه لنشر ملفاته إلى صفحة تحميل ASPX الخاصة بالتطبيق A.

نصائح أخرى

لا أعتقد أن هناك أي حل بديل لمصادقة Windows المتكاملة.ما يمكنك فعله هو حفظ الملفات في مجلد عام غير محمي، وفي حالة swfupload، استخدم معالجًا لنقل الملف عند تحميله بالكامل

بامكانك ان تحاول تحميل SWFU أيضًا - سوف يتناسب مع "فئة" برنامج Flash Uploader الخاص بك.

تستخدم شركتنا ajaxuploader.com الذي يدعم هذه الميزة.

في Internet Explorer، FileReference.upload (تحميل فلاش) سوف أرسل ملفات تعريف الارتباط أيضًا.

ينقطع هذا السلوك فقط عند التشغيل في المتصفحات الأخرى.

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