【问题标题】:PDF Handler : content-disposition filenamePDF 处理程序:内容处置文件名
【发布时间】:2013-01-26 22:39:01
【问题描述】:

我在 Web 浏览器 (IE8) HttpContext.Response.writefile(fileName) 中输出 PDF 文件,效果很好。当我尝试保存文件时,它会默认为我提供 ashx 处理程序的名称。我要实名传递。

我尝试添加标题信息如下:

context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);

它可以工作,但我不希望用户必须在打开和保存之间进行选择,我希望文件正常打开,如果用户选择保存,那么对话框将为他/她提供默认文件名。

我也试过了:

context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name);

或者只是,比如Scott Hanselman suggested in his blog

context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name);

这些都不适合我。有人有什么想法吗?

【问题讨论】:

    标签: handler filenames ashx content-disposition save-as


    【解决方案1】:

    请参阅http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf 的测试用例 - 这似乎只是 IE 中缺少的功能。

    【讨论】:

    • 非常感谢 Julian,现在说得通了。
    【解决方案2】:

    我也遇到过这个问题。 帮助我的是将内容类型也设置为application/pdf(而不是application/x-pdf,它已经过时了)

    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");
    

    【讨论】:

      【解决方案3】:

      在 INLINE 的情况下,Internet Explorer 似乎正在使用 URL 中的最后一个参数来构建文件名。 例如,如果您的网址是 http://doc.com/131231231 IE会提示你保存文件为131231231.pdf 如果您需要一个文件名,例如 foo_131231231.pdf 您可以使用以下网址破解 IE:http://doc.com/foo_131231231 您可能会稍微更改您的应用程序以期望如此丑陋的参数,但最终您的应用程序 将按您的预期工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多