Bei der Erstellung von Websites ist es häufig erforderlich, die Funktion zum Herunterladen von Dateien zu entwickeln. Es gibt drei Möglichkeiten, Dateien herunterzuladen:
1. ASP-Downloadcode
<%
Dateiname = Request.QueryString("Dateiname")
wenn filename = "", dann
Response.Write „Bitte geben Sie den Dateinamenparameter ein und geben Sie den Namen der heruntergeladenen Datei an.“
anders
Response.ContentType = "application/octet-stream"
Response.AddHeader „content-disposition“, „attachment; filename =" & filename
Setze FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Mode = 3
FileStream.Type = 1
FileStream.Open
FileStream.LoadFromFile( Server.MapPath(Dateiname))
Response.BinaryWrite( FileStream.Read )
FileStream.Close()
Setze FileStream = nichts
Ende wenn
%>Speichern Sie den obigen Code in einer ASP-Datei und verwenden Sie ihn wie folgt: download.asp?filename=a.gif.
2. Verwenden Sie WebClient
Fügen Sie den folgenden Code zum Download-Button-Ereignis hinzu
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile( " Der obige Code lädt die serverseitige a.gif-Datei ohne Aufforderung auf das Laufwerk c des Clients herunter. Ohne Aufforderung ist es ziemlich beängstigend, aber manchmal ist es notwendig, dies zu tun. Dieser Code kann auch verwendet werden Führen Sie das Programm auf dem Desktop aus.
3. ASP NET-Downloadcode mit Download-Eingabeaufforderungen
//Öffnen Sie die Datei zum Herunterladen
System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
//Grundlegende Informationen festlegen
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());
while(true)
{
//Pufferraum öffnen
byte[] buffer = neues byte[1024];
//Dateidaten lesen
int leng = r.Read(buffer, 0, 1024);
if (leng == 0)//Bis zum Ende der Datei, end
brechen;
if (leng == 1024)//Die Länge der gelesenen Dateidaten entspricht der Pufferlänge und die Pufferdaten werden direkt geschrieben
Response.BinaryWrite(buffer);
anders
{
// Dateidaten lesen, die kleiner als der Puffer sind. Definieren Sie die Puffergröße neu. Sie wird nur zum Lesen des letzten Datenblocks der Datei verwendet
byte[] b = neues Byte[länge];
for (int i = 0; i < leng; i++)
b[i] = Puffer[i];
Response.BinaryWrite(b);
}
}
r.Close();//Schließen Sie die heruntergeladene Datei
Response.End(); //Datei-Download beenden Diese Methode verfügt über ein Download-Eingabeaufforderungsfeld, sodass der Server wissen kann, wann der Download abgeschlossen ist.