بعد الاطلاع على جميع المنشورات المتعلقة بتحميل الملفات الكبيرة في csdn، كتبت هذه القطعة من القمامة. (:-))
هناك عدة طرق لتحميل الملفات الكبيرة:
1. من الصعب جدًا فهم طريقة HttpWorkerRequest الخاصة بـ Sigui:-(
2. استخدم أداة تحكم AspNetUpload التابعة لجهة خارجية لطلب المال! ! انسَ الأمر، ما زلنا نحب الحرية.
3. قم بتعديل ملف web.config، لكن لا يمكن اكتشاف الأخطاء.
4. التحميل عبر بروتوكول نقل الملفات. يحتاج الخادم إلى توفير خدمة بروتوكول نقل الملفات.
ليس لدينا خيار سوى اختيار الطريق الثالث الذي يجعلنا في غاية الغباء! (هذا غبي جدًا. لا يهم. يجب أن تأكل المزيد من السمك. سمعت أن تناول السمك يمكن أن يجعلك أكثر ذكاءً.)
ثم ادرس الطريقة الثالثة بعناية!
تعديل ملف Webcong:
<system.web>
<httpRuntime maxRequestLength="40690"
useFullyQualifiedRedirectUrl = "صحيح"
مهلة التنفيذ = "6000"
useFullyQualifiedRedirectUrl = "خطأ"
دقيقة المواضيع الحرة = "8"
مينلوكالريكويستفريثريدس = "4"
appRequestQueueLimit = "100"
تمكينVersionHeader = "صحيح"
/>
</system.web>
من بينها، تلك المرتبطة ارتباطًا وثيقًا بالتحميل هي:
maxRequestLength
يشير إلى الحد الأقصى لحجم تحميل الملف الذي يدعمه ASP.NET.
يمكن استخدام هذا الحد لمنع هجمات رفض الخدمة الناتجة عن قيام المستخدمين بتمرير أعداد كبيرة من الملفات إلى الخادم.
الحجم المحدد بالكيلوبايت.
القيمة الافتراضية هي 4096 كيلو بايت (4 ميجابايت).
ExecutionTimeout
يشير إلى الحد الأقصى لعدد الثواني المسموح بتنفيذ الطلب قبل أن يتم إغلاقه تلقائيًا بواسطة ASP.NET.
الوحدة هي ثوانٍ. اضبط هذه القيمة على قيمة أكبر عند تحميل ملفات كبيرة.
إذا كانت ذاكرة الخادم 512 ميجا، فيمكن تحميل ملفات بحجم 160 ميجا. (لم أجربه. وهذا هو الرأي الإجماعي للعديد من المنشورات على csdn.)
"www.downcodes.com."
عند هذه النقطة، انتهت إعدادات web.config.
ومع ذلك، بمجرد أن يتجاوز حجم الملف الذي تم تحميله نطاق حجم الملف المحدد، سيحدث الخطأ التالي:
لا يمكن عرض الصفحة. الصفحة التي تريد عرضها غير متاحة حاليًا. قد يواجه الموقع صعوبات فنية، أو قد تحتاج إلى ضبط إعدادات المتصفح الخاص بك.
على الرغم من أنه لا يمكن حلها، إلا أننا مازلنا بحاجة إلى اكتشاف هذا الخطأ! ما يجب القيام به؟
لقد تناولت بعض الأسماك مؤخرًا وفكرت في الأمر نظرًا لأن هذا الخطأ هو خطأ في المقدمة ناتج عن التحكم في الملف، فمن غير الممكن استخدام حاول...التقاطه في الخلفية.
لذلك فكرت في استخدام آلية صفحة التقاط الأخطاء في .NET للتعامل معها. إنه ممكن.
1. قم بإعداد web.config أولاً
<وضع الأخطاء المخصصة = "تشغيل"/>
2. قم بإنشاء ملف error.aspx جديد خصيصًا لاكتشاف الأخطاء.
3. أضف توجيه الصفحة إلى الصفحة الأولى لصفحة aspx حيث تم تحميل الملف. ErrorPage = "UploadError.aspx"
4. أضف بعض التعليمات البرمجية إلى error.aspx لتحديد ما إذا كانت رسالة الخطأ هي خطأ في المقدمة سببه الملف.
خطأ في تحميل الفئة العامة: System.Web.UI.Page
{
Page_Load باطلة خاصة (مرسل الكائن، System.EventArgs e)
{
استثناء ex = Server.GetLastError();
إذا (على سبيل المثال ! = فارغة)
{
Response.Redirect("../error.aspx");
}
آخر // الخطأ في المقدمة على سبيل المثال هو قيمة فارغة
{
Response.Redirect("uploadexcel.aspx?err=1"); // أعد الانتقال إلى صفحة التحميل وأضف معلمة الخطأ لعرض رسالة الخطأ
}
}
5. عرض رسالة الخطأ.
تحميل الفئة العامة: System.Web.UI.Page
{
Page_Load باطلة خاصة (مرسل الكائن، System.EventArgs e)
{
إذا (طلب ["يخطئ"] == "1")
{
Page.RegisterStartupScript("budget"،<script language = javascript>alert('فشل تحميل الملف! حجم الملف كبير جدًا!')</script>");
}
}
}
6. أنجز الأمر وانتهي منه. (هذه السمكة ليست مجانية.)
بعد التعديل أعلاه، يصبح التحميل الآن أن البرنامج يحدد حجم الملف إذا زاد عن ذلك، سوف تظهر رسالة خطأ.
بهذه الطريقة، سيكون الأمر أفضل بكثير، على الأقل يمكنني قبوله، ولن يكون من الصعب شرحه للمستخدمين.