سؤال

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

أريد أن أجبر مربع حوار "حفظ"، لأنه أثناء الاختبار، وجدنا أن بعض متصفحات الويب تجعل من الصعب للغاية حفظ ملفات MP3. من المهم أن يقوم طلابنا بحفظ الملف بدلا من الاستماع إليه فقط.

الشرط الآخر هو أن رابط dowload يجب أن يتوفر فقط بعد النقر فوق الطالب على مربع الاختيار الموافق على احترام حقوق الطبع والنشر على الملف.

حاولت أولا استخدام دليل الظاهري على موقع الويب الذي تمت مصادقة كمستخدم مجال. ومع ذلك، إذا قمت بفتح عنوان URL للملف الصوت مع زر أمري قد يحاول مستعرض الويب على الفور تشغيله.

بدلا من ذلك، حاولت استخدام ADODB.STREAM واستخدام Stream.LoadFromFile لإرسال الملف إلى الطالب مع إجراء محتوى مناسب لإجبار التنزيل. نظرا لأن LoadFromFile يستخدم مسار الملفات لا يمكنني استخدام الدليل الظاهري IIS، ويجب أن يمنح الوصول المجهول لموقع الويب إلى مشاركة شبكة الإنترنت الخاصة بي. لقد قمت بذلك عن طريق تشغيله كحساب مجال، لكن هذا يجعلني متوترة بعض الشيء لأنني أصدق أنه أقل أمانا.

حتى الآن ما زلت لا أستطيع تحقيق الهدف المنشود لأنه يظهر الأمر stream.loadfromfile قراءة الملف من مشاركة الشبكة. يعطي خطأ مصادقة، على الرغم من أن تسجيل الدخول المجال الذي أستخدمه لتشغيل الموقع لديه حق الوصول الكامل إلى مشاركة هذه الشبكة.

أي توصيات للحصول على وسائل بديلة لتلبية أهدافي؟

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

المحلول

عند إرجاع الملف إلى المستعرض، قم بتعيين نوع MIME ليكون "التطبيق / X-Unknown" - سيؤدي ذلك إلى طلب منك المتصفح أن يطلب منك تنزيله لأنه لن يعرف كيفية التعامل معه.

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

نصائح أخرى

أفضل رهان هو إضافة رأس ردك التالي.

المحتوى التصرف: المرفق؛ اسم الملف = fname.ext.

يرى: http://support.microsoft.com/kb/260519. لمزيد من المعلومات

أحب إجابة CK عن تغيير نوع MIME (كنت أقوم بالتصويت إذا كنت في المرتبة). سيحصل هذا على توفير مشكلة.

يمكنك تعديل رأس الاستجابة لتغيير نوع MIME بدلا من استخدام ADODB جرب التعليمات البرمجية التالية ..

         Response.Clear()  
         Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name)  
         Response.AddHeader("Content-Length", file.Length.ToString())  
         Response.ContentType = "application/octet-stream"  
         Response.WriteFile(file.FullName)  
         Response.End 'if file does not exist  

يمكنك أيضا محاولة ضغط الملفات الصوتية مع امتداد Zip. هذا سيكون له نفس التأثير ويقلل أيضا النطاق الترددي المطلوب للتنزيل. قد ترغب في النظر في Cacheing ملفاتك المضغوطة إذا قمت بذلك بشكل حيوي.

حاول إلقاء نظرة على الكود الكامل هنا - http://www.xefteri.com/articles/show.cfm؟id=8.

يمكنك إضافة قمة حقوق الطبع والنشر الخاصة بك لفحص التحميل الفاسق أيضا.

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