Ich erstelle dynamisch eine Zip-Datei in einer ASP.NET-Seite und sende dann den Stream an Response.Das Streaming einer Datei in ASP.NET funktioniert in Firefox, aber nicht im Internet Explorer
In Firefox kann ich die Datei mit dem Namen Images.zip
herunterladen. Es funktioniert korrekt. In Internet Explorer 7 wird versucht, eine Datei mit dem Namen ZipExport.aspx
herunterzuladen, oder, wenn sie sich in einem generischen Handler befindet, ZipExport.ashx
, und sie besagt, dass sie nicht auf dem Server gefunden werden kann und fehlschlägt.
Hier ist mein Code:
Response.BufferOutput = true;
Response.ClearHeaders();
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename=Images.zip");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoServerCaching();
Response.Cache.SetNoStore();
Response.Cache.SetMaxAge(System.TimeSpan.Zero);
ZipFile zip = new ZipFile();
zip.AddFile(Server.MapPath("sample1.png"));
zip.Save(Response.OutputStream);
Ich möchte nicht über eine Httphandler für eine bestimmte Datei machen und es mit IIS registrieren.
Gibt es etwas Einfaches, das ich vermisse, oder ist Internet Explorer schuld daran, dass ich meinen Inhaltsdispositionskopf ignoriert habe?
Edit: entfernt ich diese Zeilen und Dinge gearbeitet:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Edit: Hier ist der Code funktioniert, wenn jemand interessiert ist:
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
context.Response.BufferOutput = false;
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("content-disposition",
"attachment; filename=ChartImages.zip");
context.Response.Cache.SetNoServerCaching();
context.Response.Cache.SetMaxAge(System.TimeSpan.Zero);
using(ZipFile zip = new ZipFile())
{
zip.AddFile(context.Server.MapPath("sample1.png"));
zip.Save(context.Response.OutputStream);
}
context.ApplicationInstance.CompleteRequest();
}
Als ein Nebenproblem möchten Sie möglicherweise BufferOutput auf false festlegen. – RichardOD
gibt dir Fiddler irgendwelche Informationen über das Problem? – BigBlondeViking