有沒有在Java/.jsp中設置內容類型等方式...這樣一個PDF鏈接提示用戶保存它,而不是打開它在瀏覽器中的相同或不同窗口?我已經看到了一些如何在PHP中執行此操作的示例,但不是Java。如何鏈接到PDF作爲文件與Java
不確定編譯與解釋語言是否可能與我爲什麼找不到Java解決方案有關。 (隨機思考)
有沒有在Java/.jsp中設置內容類型等方式...這樣一個PDF鏈接提示用戶保存它,而不是打開它在瀏覽器中的相同或不同窗口?我已經看到了一些如何在PHP中執行此操作的示例,但不是Java。如何鏈接到PDF作爲文件與Java
不確定編譯與解釋語言是否可能與我爲什麼找不到Java解決方案有關。 (隨機思考)
您需要設置Content-Type
和Content-Disposition
標題。假設response
是HttpServletResponse
對象,
String filename = "foo.pdf";
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
你想設置一個Content-disposition頭
如果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);
這是一個很好的開始。是的,我通過鏈接強制「另存爲」PDF文件。我現在遇到的問題是我無法弄清楚如何設置路徑。我把pdf存儲在war文件以外的web服務器上的單獨文件夾中,並且需要導航到該文件夾才能加載它。 – 2011-03-09 04:28:31
@Chad:如何設置哪個路徑?文件保存在瀏覽器電腦上的路徑?你無法控制。 – 2011-03-09 04:30:07
pdf駐留在服務器上的路徑。在Tomcat的我的webapps文件夾中,我有我的應用程序的war文件以及要下載的文件的文件夾。我如何指定我想查看該文件夾?即「/downloads/sample.pdf」 – 2011-03-09 04:33:22