System.IO.Stream iStream = null;
// المخزن المؤقت لقراءة 10 كيلو بايت في القطعة:
byte[] buffer = new Byte[10240];
// طول الملف:
طول كثافة العمليات؛
// إجمالي البايتات للقراءة:
بيانات طويلة للقراءة؛
// حدد الملف المراد تنزيله بما في ذلك مساره.
مسار ملف السلسلة = @"E:softwareSQL Server 2000 Personal Edition.ISO";
// تحديد اسم الملف.
اسم ملف السلسلة = System.IO.Path.GetFileName(filepath);
يحاول
{
// افتح الملف.
iStream = جديد System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read);
استجابة. واضح ()؛
// إجمالي البايتات للقراءة:
dataToRead = iStream.Length;
طويلة ع = 0؛
إذا (Request.Headers["Range"]!=null)
{
رمز الاستجابة = 206؛
p = long.Parse( Request.Headers["Range"].Replace("bytes=""").Replace("-"،""));
}
إذا (ع! = 0)
{
Response.AddHeader("Content-Range"،"bytes" + p.ToString() + "-" + ((long)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());
}
Response.AddHeader("Content-Length",((long)(dataToRead-p)).ToString());
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));
iStream.Position = p;
dataToRead = dataToRead - p;
// اقرأ البايتات.
بينما (dataToRead > 0)
{
// التحقق من اتصال العميل.
إذا (Response.IsClientConnected)
{
// اقرأ البيانات الموجودة في المخزن المؤقت.
length = iStream.Read(buffer, 0, 10240);
// اكتب البيانات إلى دفق الإخراج الحالي.
Response.OutputStream.Write(buffer, 0, length);
// ادفع البيانات إلى مخرجات HTML.
Response.Flush();
المخزن المؤقت = بايت جديد [10240] ؛
dataToRead = dataToRead - length;
}
آخر
{
// منع الحلقة اللانهائية في حالة قطع اتصال المستخدم
dataToRead = -1;
}
}
}
قبض (استثناء على سبيل المثال)
{
// اعترض الخطأ، إن وجد.
Response.Write("خطأ:" + ex.Message);
}
أخيراً
{
إذا (iStream! = فارغ)
{
//أغلق الملف.
iStream.Close();
}
Response.End();
}