2017-10-18 2 views
0

Ich versuche, Zip-Dateien von meinem .net C# -Anwendung herunterladen. Nicht erfolgreich sein. Mein Code ist unten. Der Dateipfad und Name ist vollständig gültig, es scheint nichts herunterzuladen. Beachten Sie, dass ich sowohl "application/x-zip-compressed" als auch "application/zip" als Inhaltstyp habe (einer auskommentiert, beides ausprobiert). Keine funktioniert. Kein Hinweis auf einen Fehler, nur nichts Herunterladen.herunterladen .zip-Dateien in C# .net

Was ist nussig, ich schwöre, dass dieser Code vor ein paar Wochen funktionierte, mit der Meldung, "Speichern als" -Option gegeben wird, gerade aus irgendwelchen Gründen jetzt nicht passiert.

Wer sieht etwas falsch, oder liegt mein Problem woanders außerhalb des Codes?

FileInfo file = new FileInfo(filepath); 

Response.Clear(); 

Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 

Response.AddHeader("Content-Length", file.Length.ToString()); 

//Response.ContentType = "application/x-zip-compressed"; 
Response.ContentType = "application/zip"; 
Response.WriteFile(file.FullName); 
+0

Also ... was ist das Problem? Was siehst du? Irgendwelche Fehler? Hängt es? – JuanR

Antwort

0

Ich vermute, Sie FileNotFoundException bei Response.AddHeader("Content-Length", file.Length.ToString()); fühlt.

Um dies zu beheben, müssen Sie Server.MapPath(...) verwenden, die das Stammverzeichnis Ihrer Anwendung zum filename hinzufügt. Desweiteren sollten Sie Flush() und End() Ihre Response richtig zu force the client empfangen.

string filename = "myfile.zip"; 
string serverpath = Server.MapPath($"~/{filename}"); 
FileInfo file = new FileInfo(serverpath); 
Response.Clear(); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = "application/zip"; 
Response.WriteFile(file.FullName); 
Response.Flush(); 
Response.End();