2010-12-10 3 views
8

Ich bin damit beschäftigt, einen Handler zu schreiben, der verschiedene Dokumente zum Download oder zur Präsentation auf Webformularseiten bereitstellt. Die Dokumente reichen von verschiedenen Bildformaten über PDF, MS Office-Dokumente bis hin zu generischen Binärdateien. Mein grundlegender Entwurf des Download-Vorgangs ist wie folgt:Inhaltstyp beim Bereitstellen einer Datei in einem generischen Handler

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(); 
} 

Ich habe jedoch einige Bedenken über alle Dokumente zusammen als application/octet-stream Verklumpen, und ich würde es vorziehen, wenn möglich, einen bestimmten Inhaltstyp pro Dokumenttyp zu verwenden, . Ich habe eine DB-Tabelle für Dokumenttypen, wo ich dies speichern könnte. Gehe ich in die richtige Richtung, und wenn ja, wo finde ich eine geeignete Startliste mit Inhaltstypen für Dokumenttypen?

Antwort

17

application/octet-stream ist für das Herunterladen von Dateien in Ordnung, aber wenn Sie möchten, dass der Browser mit der Datei interagiert, möchten Sie möglicherweise den Inhaltstyp ändern.

Zum Beispiel ist der Mime-Typ zum Herunterladen einer PDF-Datei application/octet-stream, während application/pdf dem Browser mitteilt, die Datei im Browser selbst zu öffnen.

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

+0

Große Ressource, danke. – ProfK

Verwandte Themen