Response.AddHeader (“Content-Disposition”) non apre il file in IE6

Sto usando Response.AddHeader (“Content-Disposition”, “attachment; filename =” + Server.HtmlEncode (FileName)); per aprire una finestra di dialogo ‘apri / salva file’ per gli utenti, in modo che possano scaricare un file sulle loro macchine locali.

Questo funziona normalmente in IE7, ma su IE6 il file non si apre quando l’utente fa clic sul pulsante Apri nella finestra di dialogo ‘apri / salva file’. Sono passato attraverso la rete e ho trovato Response.AddHeader (“Content-Disposition”, “inline; filename =” + Server.HtmlEncode (FileName)); dovrebbe essere fornito di lavorare in IE6, e funziona bene ..

Ma il problema è che la maggior parte dei file che possono aprire nel browser si apre sulla pagina stessa. Ad esempio, l’utente su una pagina di posta elettronica e fare clic su download di un file immagine si apre lì, ho bisogno di aprire in un’altra finestra, come nel caso di IE7 cosa posso fare … altri file che non possono essere aperti in bowser aperti con l’applicazione corrente nel sistema cioè (word, excel ecc.).

per favore suggerisci un metodo per attaccare con lo stesso codice per entrambi IE … Il codice che ho usato è qui ….

Response.AddHeader("Content-Disposition", "attachment; filename=" +FileName); Response.AddHeader("Content-Length", file.Length.ToString()); Response.ContentType = ReturnExtension(file.Extension.ToLower()); Response.TransmitFile(file.FullName); Response.End(); private string ReturnExtension(string fileExtension) { switch (fileExtension) { case ".txt": return "text/plain"; case ".doc": return "application/ms-word"; case ".xls": return "application/vnd.ms-excel"; case ".gif": return "image/gif"; case ".jpg": case "jpeg": return "image/jpeg"; case ".bmp": return "image/bmp"; case ".wav": return "audio/wav"; case ".ppt": return "application/mspowerpoint"; case ".dwg": return "image/vnd.dwg"; default: return "application/octet-stream"; } } 

ho trovato il problema in IE 6, dobbiamo leggere il contenuto e utilizzare i buffer e scrivere in binario per aprire il file in IE 6, il codice qui sotto funziona bene per me in IE6

 FileStream sourceFile = new FileStream(Server.MapPath(@"FileName"), FileMode.Open); float FileSize; FileSize = sourceFile.Length; byte[] getContent = new byte[(int)FileSize]; sourceFile.Read(getContent, 0, (int)sourceFile.Length); sourceFile.Close(); Response.ClearContent(); Response.ClearHeaders(); Response.Buffer = true; Response.ContentType = ReturnExtension(file.Extension.ToLower()); Response.AddHeader("Content-Length", getContent.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName); Response.BinaryWrite(getContent); Response.Flush(); Response.End(); 

Prova questa impostazione del tipo di contenuto su ottetto stream:

 Response.ContentType = "application/octet-stream";