2013-02-11 58 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\"");