Dalam produksi situs web, seringkali perlu mengembangkan fungsi mengunduh file. Ada tiga cara untuk mengunduh file:
1. Kode unduhan ASP
<%
nama file = Permintaan.QueryString("NamaFile")
jika nama file = "" maka
Response.Write "Silakan masukkan parameter nama file dan tentukan nama file yang diunduh"
kalau tidak
Response.ContentType = "aplikasi/aliran oktet"
Response.AddHeader "disposisi konten", "lampiran; nama file =" & nama file
Setel FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Jenis = 1
FileStream.Buka
FileStream.LoadFromFile( Server.MapPath(nama file))
Respons.BinaryWrite( FileStream.Read )
FileStream.Close()
Setel FileStream = tidak ada
berakhir jika
%>Simpan kode di atas ke dalam file tipe asp, dan gunakan seperti: download.asp?filename=a.gif.
2. Gunakan Klien Web
Tambahkan kode berikut ke acara tombol unduh
System.Net.WebClient wc = Sistem.Net.WebClient() baru;
wc.DownloadFile( " Kode di atas akan mengunduh file a.gif sisi server ke drive c klien tanpa perintah apa pun. Cukup menakutkan tanpa perintah apa pun, tetapi terkadang hal ini perlu dilakukan. Kode ini juga dapat digunakan Jalankan program di desktop.
3. Kode unduhan ASP NET dengan petunjuk unduhan
//Buka file yang akan diunduh
System.IO.FileStream r = System.IO.FileStream baru (Nama File, System.IO.FileMode.Open);
//Atur informasi dasar
Respon.Buffer = false;
Response.AddHeader("Koneksi", "Tetap Hidup");
Response.ContentType = "aplikasi/aliran oktet";
Response.AddHeader("Disposisi Konten", "lampiran;namafile=" + System.IO.Path.GetFileName(NamaFile));
Response.AddHeader("Panjang Konten", r.Panjang.ToString());
sementara (benar)
{
//Buka ruang buffer
byte[] penyangga = byte baru[1024];
//Baca data file
int leng = r.Baca(buffer, 0, 1024);
if (leng == 0)//Di akhir file, end
merusak;
if (leng == 1024)//Panjang data file yang dibaca sama dengan panjang buffer, dan data buffer ditulis secara langsung
Respon.BinaryWrite(buffer);
kalau tidak
{
//Baca data file lebih kecil dari buffer, tentukan ulang ukuran buffer, hanya digunakan untuk membaca blok data terakhir dari file
byte[] b = byte baru[leng];
untuk (int saya = 0; saya < panjang; saya++)
b[i] = penyangga[i];
Respon.BinaryWrite(b);
}
}
r.Close();//Tutup file yang diunduh
Response.End(); //Mengakhiri pengunduhan file. Metode ini memiliki kotak prompt pengunduhan, sehingga server dapat mengetahui kapan pengunduhan selesai.