Tengo una base de datos sql que almacena algunos documentos.C# ASP.NET 3.5 problemas de descarga de archivos de disposición de contenido
Un usuario puede iniciar sesión en la aplicación y ver una lista de sus documentos.
Al hacer clic en la descarga de un botón de enlace en una vista de cuadrícula de sus documentos, obtengo el archivo de la base de datos, lo escribo en el sistema de archivos y luego ejecuto este código. Método
System.IO.FileInfo file = new System.IO.FileInfo(System.Configuration.ConfigurationManager.AppSettings["UploadPath"] + DocumentName);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Cookies.Clear();
Response.Cache.SetCacheability(HttpCacheability.Private);
Response.CacheControl = "private";
Response.Charset = System.Text.UTF8Encoding.UTF8.WebName;
Response.ContentEncoding = System.Text.UTF8Encoding.UTF8;
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.AppendHeader("Pragma","cache");
Response.AppendHeader("Expires", "60");
Response.ContentType = GetContentType(file.Extension);
Response.AppendHeader("Content-Disposition",
"inline; " +
"filename=\"" + file.Name + "\"; " +
"size=" + file.Length.ToString() + "; " +
"creation-date=" + DateTime.Now.ToString("R") + "; " +
"modification-date=" + DateTime.Now.ToString("R") + "; " +
"read-date=" + DateTime.Now.ToString("R"));
Mi getContentType() sólo devuelve el tipo de archivo adecuado para los archivos que estoy permitiendo "application/pdf, application/msw0rd, etc.
Mi problema es que cuando el archivo se guarda, es la página web en sí, no el archivo del sistema de archivos. Y en google chrome, está poniendo una extensión .htm al final del nombre del archivo, supongo porque sabe que es una página web?
De todos modos, una gran primera el paso sería obtener el archivo real, y no una copia de la página web en HTML en la que están sentados!
Gracias.