PDF处理程序:内容描述文件名

23

我正在Web浏览器(IE8)中输出PDF文件HttpContext.Response.writefile(fileName),它的效果非常好。当我尝试保存文件时,它会给我默认的ashx处理程序名称。我想实际传递真实名称。

我尝试添加如下的头信息:

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

它可以工作,但我不希望用户在打开文件时选择“打开”或“保存”,我希望文件能够正常打开,如果用户选择保存,则对话框会给他/她默认的文件名。

我也尝试过:

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

或者像Scott Hanselman在他的博客中建议的那样

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

对我来说,这些都不起作用。有人有任何想法吗?

3个回答

15

非常感谢您,朱利安,现在我明白了。 - user2062308

9

我也遇到了这个问题。 帮助我的方法是将contenttype设置为application/pdf(而不是已过时的application/x-pdf)。

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

4

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接