2011-03-09 23 views
0

有沒有在Java/.jsp中設置內容類型等方式...這樣一個PDF鏈接提示用戶保存它,而不是打開它在瀏覽器中的相同或不同窗口?我已經看到了一些如何在PHP中執行此操作的示例,但不是Java。如何鏈接到PDF作爲文件與Java

不確定編譯與解釋語言是否可能與我爲什麼找不到Java解決方案有關。 (隨機思考)

回答

5

您需要設置Content-TypeContent-Disposition標題。假設responseHttpServletResponse對象,

String filename = "foo.pdf"; 

response.setHeader("Content-Type", "application/pdf"); 
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 

更多信息:The BalusC Code: FileServlet

+0

這是一個很好的開始。是的,我通過鏈接強制「另存爲」PDF文件。我現在遇到的問題是我無法弄清楚如何設置路徑。我把pdf存儲在war文件以外的web服務器上的單獨文件夾中,並且需要導航到該文件夾​​才能加載它。 – 2011-03-09 04:28:31

+0

@Chad:如何設置哪個路徑?文件保存在瀏覽器電腦上的路徑?你無法控制。 – 2011-03-09 04:30:07

+0

pdf駐留在服務器上的路徑。在Tomcat的我的webapps文件夾中,我有我的應用程序的war文件以及要下載的文件的文件夾。我如何指定我想查看該文件夾?即「/downloads/sample.pdf」 – 2011-03-09 04:33:22

3

如果PDF不是由一個servlet自動生成或從外部位置讀取,而只是存在於公共web內容,那麼就足夠了一個Filter上的URL模式映射*.pdf(或任何更具體/通用),它在doFilter()方法中執行以下任務。

HttpServletRequest req = (HttpServletRequest) request; 
HttpServletResponse res = (HttpServletResponse) response; 
String filename = req.getRequestURI().substring(req.getRequestURI().lastIndexOf('/') + 1); 
res.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\""); 
chain.doFilter(request, response); 
相關問題