2013-02-11 87 views
13

我正在Web浏览器(IE8)HttpContext.Response.writefile(fileName)中输出PDF文件,它工作的很好。当我尝试保存文件时,它会给我ashx处理程序的名称作为默认值。我想真正传递真名。PDF处理程序:内容处理文件名

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

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

这些都不适合我。有人有任何想法吗?

回答

2

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

2

我也遇到过这个问题。 什么帮助我是对的contentType也设置为application/pdf(而不是application/x-pdf,这是过时的)

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