2010-12-10 10 views
8

Estoy ocupado escribiendo un controlador para servir varios documentos para descarga o presentación en páginas de formularios web. Los documentos van desde varios formatos de imagen, a PDF, a documentos de MS Office, a archivos binarios genéricos. Mi proyecto básico del proceso de descarga es de la siguiente manera:Tipo de contenido al servir un archivo en un manejador genérico

public void ProcessRequest(HttpContext context) 
{ 
    var docUrl = context.Request["docUrl"]; 
    if (string.IsNullOrEmpty(docUrl)) { 
     context.Response.End(); 
     return; 
    } 
    var docPath = context.Server.MapPath(docUrl); 
    var docInfo = new FileInfo(docPath); 

    context.Response.Clear(); 
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(docPath)); 
    context.Response.AddHeader("Content-Length", docInfo.Length.ToString()); 
    context.Response.ContentType = "application/octet-stream"; 
    context.Response.WriteFile(docPath); 
    context.Response.End(); 
} 

Sin embargo, tengo algunas dudas acerca de la formación de grumos todos los documentos juntos como application/octet-stream, y yo preferiría, si es posible, utilizar un tipo de contenido más específico según el tipo de documento . Tengo una tabla de DB para tipos de documentos donde podría almacenar esto. ¿Estoy yendo en la dirección correcta? De ser así, ¿dónde puedo encontrar una lista de partida adecuada de tipos de contenido para tipos de documentos?

Respuesta

17

application/octet-stream está bien para la descarga de archivos, pero si desea que el navegador interactúe con el archivo, es posible que desee cambiar el tipo de contenido.

Por ejemplo, el tipo MIME para la descarga de un archivo PDF es application/octet-stream, mientras application/pdf le dirá al navegador para abrir el archivo en el propio navegador.

http://en.wikipedia.org/wiki/Internet_media_type

+0

Gran recurso, gracias. – ProfK

Cuestiones relacionadas