في إنتاج مواقع الويب، غالبًا ما يكون من الضروري تطوير وظيفة تنزيل الملفات. هناك ثلاث طرق لتنزيل الملفات:
1. كود تنزيل ASP
<%
اسم الملف = Request.QueryString("اسم الملف")
إذا كان اسم الملف = "" ثم
Response.Write "الرجاء إدخال معلمة اسم الملف وتحديد اسم الملف الذي تم تنزيله"
آخر
Response.ContentType = "التطبيق/الدفق الثماني"
Response.AddHeader "التخلص من المحتوى"، "المرفق؛ اسم الملف =" واسم الملف
تعيين FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Type = 1
FileStream.Open
FileStream.LoadFromFile( Server.MapPath(اسم الملف))
Response.BinaryWrite( FileStream.Read )
FileStream.Close()
تعيين FileStream = لا شيء
نهاية إذا
%>احفظ الكود أعلاه في ملف من نوع asp، واستخدمه مثل: download.asp?filename=a.gif.
2. استخدم WebClient
أضف الكود التالي إلى حدث زر التنزيل
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile( " سيقوم الكود أعلاه بتنزيل ملف a.gif من جانب الخادم على محرك الأقراص c الخاص بالعميل دون أي مطالبات. إنه أمر مخيف جدًا دون أي مطالبات، ولكن في بعض الأحيان يكون من الضروري القيام بذلك. يمكن أيضًا استخدام هذا الرمز قم بتشغيل البرنامج على سطح المكتب.
3. كود تنزيل ASP NET مع مطالبات التنزيل
//افتح الملف للتحميل
System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
// قم بتعيين المعلومات الأساسية
Response.Buffer = false;
Response.AddHeader("Connection"، "Keep-Alive");
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
Response.AddHeader("Content-Length"، r.Length.ToString());
بينما (صحيح)
{
// فتح مساحة عازلة
بايت[] المخزن المؤقت = بايت جديد[1024];
// قراءة بيانات الملف
int leng = r.Read(buffer, 0, 1024);
if (leng == 0)// إلى نهاية الملف، end
استراحة؛
if (leng == 1024)// طول بيانات ملف القراءة يساوي طول المخزن المؤقت، وتتم كتابة بيانات المخزن المؤقت مباشرة
Response.BinaryWrite(buffer);
آخر
{
// قراءة بيانات الملف أصغر من المخزن المؤقت، وأعد تحديد حجم المخزن المؤقت، ويستخدم فقط لقراءة كتلة البيانات الأخيرة من الملف
byte[] b = new byte[leng];
لـ (int i = 0; i < leng; i++)
b[i] = buffer[i];
Response.BinaryWrite(b);
}
}
r.Close();// أغلق الملف الذي تم تنزيله
Response.End(); // إنهاء تنزيل الملف. تحتوي هذه الطريقة على مربع مطالبة بالتنزيل، حتى يتمكن الخادم من معرفة وقت اكتمال التنزيل.