在通用处理程序中提供文件时的内容类型

时间:2010-12-10 05:15:12

标签: asp.net

我正忙于编写处理程序来提供各种文档,以便在Web表单页面中下载或显示。这些文档的范围从各种图像格式,PDF,MS Office文档到通用二进制文件。我的下载过程基本草案如下:

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

但是,我对将所有文档整合为application/octet-stream有一些疑虑,如果可行,我希望每种文档类型使用更具体的内容类型。我有一个文件类型的数据库表,我可以存储它。我是否朝着正确的方向前进,如果是这样,我在哪里可以找到合适的文档类型内容类型的起始列表?

1 个答案:

答案 0 :(得分:22)

application/octet-stream适用于文件下载,但如果您希望浏览器与该文件进行交互,则可能需要更改内容类型。

例如,用于下载PDF文件的mime类型为application/octet-stream,而application/pdf将告诉浏览器在浏览器中打开该文件。

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