我正在Web浏览器(IE8)HttpContext.Response.writefile(fileName)
中输出PDF文件,效果很好。当我尝试保存文件时,它会给我一个默认的ashx处理程序的名称。我想实际传递真实姓名。
我尝试添加标题信息如下:
context.Response.AddHeader("content-disposition", "attachment; filename=" + fileInfo.Name);
它可以工作,但我不希望用户必须在打开和保存之间进行选择,我希望文件正常打开,如果用户选择保存它,那么对话框将为他/她提供默认文件名。 / p>
我也试过了:
context.Response.AddHeader("content-disposition", "inline; filename=" + fileInfo.Name);
或者就像Scott Hanselman suggested in his blog一样。
context.Response.AddHeader("content-disposition", "filename=" + fileInfo.Name);
这些都不适合我。有没有人有任何想法?
答案 0 :(得分:12)
请参阅http://greenbytes.de/tech/tc2231/#inlwithasciifilenamepdf处的测试用例 - 似乎这只是IE中缺少的功能。
答案 1 :(得分:3)
如果是INLINE,Internet Explorer似乎正在使用URL中的最后一个参数来构建文件名。 例如,如果您的网址为http://doc.com/131231231 IE将提示您将文件另存为131231231.pdf 如果你需要一个文件名,例如foo_131231231.pdf 你可以使用这个网址来破解IE:http://doc.com/foo_131231231 你可能会有点改变你的应用程序,以期望这样丑陋的参数,但最后你的应用程序 将按预期工作。
答案 2 :(得分:2)
我也遇到过这个问题。
帮助我的是将内容类型设置为application/pdf
(而不是过时的application/x-pdf
)
response.setContentType("application/pdf");
response.setHeader("Content-disposition", "inline; filename=\"Report.pdf\"");