Sistem.IO.Stream iStream = null;
// Buffer untuk membaca 10K byte dalam potongan:
byte[] buffer = Byte baru[10240];
// Panjang file:
int panjang;
// Total byte yang harus dibaca:
dataToRead panjang;
// Identifikasi file yang akan diunduh termasuk jalurnya.
string jalur file = @"E:softwareSQL Server 2000 Personal Edition.ISO";
// Identifikasi nama file.
string nama file = System.IO.Path.GetFileName(jalur file);
mencoba
{
// Buka berkasnya.
iStream = Sistem.IO.FileStream baru(jalur file, System.IO.FileMode.Open,
System.IO.FileAccess.Read,System.IO.FileShare.Read);
Respon.Hapus();
// Total byte yang harus dibaca:
dataToRead = iStream.Panjang;
panjang p = 0;
if(Permintaan.Headers["Rentang"]!=null)
{
Respon.StatusCode = 206;
p = long.Parse( Permintaan.Headers["Rentang"].Replace("bytes=","").Replace("-",""));
}
jika(hal != 0)
{
Response.AddHeader("Rentang Konten","bytes " + p.ToString() + "-" + ((panjang)(dataToRead - 1)).ToString() + "/" + dataToRead.ToString());
}
Response.AddHeader("Panjang Konten",((panjang)(dataToRead-p)).ToString());
Response.ContentType = "aplikasi/aliran oktet";
Response.AddHeader("Disposisi Konten", "lampiran; nama file=" + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(nama file)));
iStream.Posisi = p;
dataToRead = dataToRead - p;
// Baca byte.
sementara (dataToRead > 0)
{
// Verifikasi bahwa klien terhubung.
jika (Respon.IsClientConnected)
{
// Membaca data di buffer.
panjang = iStream.Baca(buffer, 0, 10240);
// Tulis data ke aliran keluaran saat ini.
Response.OutputStream.Write(buffer, 0, panjang);
// Keluarkan data ke keluaran HTML.
Respon.Flush();
buffer= Byte baru[10240];
dataToRead = dataToRead - panjang;
}
kalau tidak
{
//mencegah loop tak terbatas jika pengguna terputus
dataToBaca = -1;
}
}
}
menangkap (Pengecualian ex)
{
// Jebak kesalahannya, jika ada.
Response.Write("Error : " + ex.Pesan);
}
Akhirnya
{
jika (iStream != nol)
{
//Tutup berkasnya.
iStream.Tutup();
}
Respon.End();
}