asp.net - from - return download file asp net mvc
Cómo implementar una descarga de archivos en asp.net (2)
Esto ayuda:
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();
Response.TransmitFile es la forma aceptada de enviar archivos grandes, en lugar de Response.WriteFile.
¿Cuál es la mejor manera de implementar, desde una página web, una acción de descarga usando asp.net 2.0?
Los archivos de registro para una acción se crean en un directorio llamado [raíz de la aplicación] / registros. Tengo la ruta completa y deseo proporcionar un botón que, al hacer clic, descargue el archivo de registro del servidor IIS a la PC local del usuario.
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();
}
Actualizar:
El código inicial
Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name);
tiene "inline; attachment", es decir, dos valores para Content Disposition.
No sé exactamente cuándo comenzó, pero en Firefox solo no aparece el nombre del archivo correcto. El cuadro de descarga de archivos aparece con el nombre de la página web y su extensión ( pagename.aspx ). Después de la descarga, si cambia el nombre al nombre real; el archivo se abre con éxito
Según esta página , opera en base al orden de llegada . Cambiar el valor al attachment
solo resolvió el problema.
PD: No estoy seguro de si esta es la mejor práctica pero el problema está resuelto.