Pregunta

¿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 de una acción se crean en un directorio llamado [Raíz de la aplicación]/Logs.Tengo la ruta completa y quiero proporcionar un botón que, al hacer clic, descargará el archivo de registro del servidor IIS a la PC local del usuario.

¿Fue útil?

Solución

¿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.

Otros consejos

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 "en línea; archivo adjunto", es decirdos valores para la disposición del contenido.

No sé exactamente cuándo empezó, pero en Firefox solo el nombre de archivo correcto no aparecía.Aparece el cuadro de descarga del archivo con el nombre de la página web y su extensión (nombre de página.aspx).Después de la descarga, si le cambia el nombre al nombre real;El archivo se abre correctamente.

según esta página, opera en Por orden de llegada.Cambiando el valor a attachment solo resolvió el problema.

PD:No estoy seguro de si esta es la mejor práctica, pero el problema está resuelto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top