Wie implementieren Sie eine Datei-download in asp.net
Frage
Was ist der beste Weg, um zu implementieren, aus einer web-Seite ein download-Aktion mit asp.net 2.0?
Protokolldateien für eine Aktion erstellt werden, in ein Verzeichnis namens [Anwendung Root]/Logs.Ich habe den vollständigen Pfad und möchten eine Taste,, dass, wenn darauf geklickt wird, laden Sie die log-Datei auf dem IIS-server an die Benutzer von lokalen pc.
Lösung
Wird diese Hilfe:
http://www.west-wind.com/weblog/posts/76293.aspx
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt");
Response.TransmitFile( Server.MapPath("~/logfile.txt") );
Response.End();
Antwort.TransmitFile ist die akzeptierte Möglichkeit, das senden großer Dateien, anstatt der Antwort.WriteFile.
Andere Tipps
http://forums.asp.net/p/1481083/3457332.aspx
string filename = @"Specify the file path in the server over here....";
FileInfo fileInfo = new FileInfo(filename);
if (fileInfo.Exists)
{
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Flush();
Response.TransmitFile(fileInfo.FullName);
Response.End();
}
Update:
Der erste code
Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);
hat "inline;Anlage", d.h.zwei Werte für die Inhalte Verfügung.
Weiß nicht, Wann genau es angefangen hat, aber in Firefox nur der richtige Dateiname wurde nicht angezeigt.Die Datei download-box angezeigt wird mit den Namen der Webseite und deren Verlängerung (pagename.aspx).Nach dem download, wenn Sie es umbenennen zurück zu den eigentlichen Namen;- Datei erfolgreich geöffnet wird.
Wie pro diese Seite, es funktioniert auf First Come, First Served.Ändern Sie den Wert auf attachment
nur das Problem gelöst.
PS:Ich bin mir nicht sicher, ob dies die beste Praxis, sondern das Problem behoben ist.