2011-03-09 5 views
0

Java/.jsp에서 콘텐츠 형식 등을 설정하는 방법이 있나요? 그래서 PDF 링크를 열면 사용자가 파일을 열지 않고 저장하도록 지시합니다. 브라우저에서 같은 창 또는 다른 창? PHP에서는이 작업을 수행하는 방법에 대한 예제를 보았지만 Java에서는 수행하지 못했습니다.PDF 파일로 자바로 링크하는 방법

컴파일 된 언어와 해석 된 언어가 Java 솔루션을 찾을 수없는 이유와 관련이 있는지 확실하지 않습니다. (임의의 생각)

답변

5

Content-TypeContent-Disposition 헤더를 설정해야합니다. response를 가정하는 것은 HttpServletResponse 객체,

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 파일 외부의 웹 서버에있는 별도의 폴더에 저장하고이 폴더로 이동해야합니다. –

+0

@Chad : 경로를 설정하는 방법은 무엇입니까? 파일이 브라우저의 컴퓨터에 저장되는 경로? 당신은 그것을 통제 할 수 없습니다. –

+0

pdf가 서버에 상주하는 경로입니다. Tomcat의 webapps 폴더 안에는 내 응용 프로그램 용 war 파일과 다운로드 할 파일 폴더가 있습니다. 해당 폴더를보고 싶다는 것을 어떻게 지정할 수 있습니까? 예 : "/downloads/sample.pdf" –

2

당신은 PDF가 서블릿에 의해 자동 생성 또는 외부 위치에서 읽을 수 없습니다되는 경우 Content-disposition 헤더

3

을 설정할하지만, 공공 웹 콘텐츠 단지 존재는, 다음은 URL 패턴에 Filter을지도하기에 충분 *.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); 
관련 문제