Je génère dynamiquement un fichier Zip dans une page ASP.NET, puis envoie le flux à Response.La diffusion d'un fichier dans ASP.NET fonctionne dans Firefox mais pas dans Internet Explorer
Dans Firefox, je peux télécharger le fichier Images.zip
. Cela fonctionne correctement. Dans Internet Explorer 7, il essaie de télécharger un fichier appelé ZipExport.aspx
ou s'il est dans un gestionnaire générique, ZipExport.ashx
et il dit qu'il ne peut pas être trouvé sur le serveur et échoue.
Voici mon 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);
Je ne veux pas faire un HTTPHandler pour un certain fichier et l'enregistrer avec IIS.
Y a-t-il quelque chose de simple qui me manque ou est-ce qu'Internet Explorer est responsable d'ignorer mon en-tête de disposition de contenu?
Edit: Je retire ces lignes et les choses ont fonctionné:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Edit: Voici le code de travail si quelqu'un est intéressé:
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();
}
En tant que problème secondaire, vous pouvez définir le paramètre BufferOutput sur false. – RichardOD
est-ce que fiddler vous donne des informations sur le problème? – BigBlondeViking