2012-05-05 4 views
0

컴퓨터 기능을 사용하려면보기 및 다운로드 .pdf 파일이 있어야합니다. Spring MVC 3을 사용하고보기는 파일의 위치를 ​​URL로 가리키는 것처럼 간단합니다.자바 웹 응용 프로그램에서보기 및 다운로드 PDF 파일 간의 차이점

하지만 어떻게 파일을 다운로드 할 수 있는지 잘 모르겠습니다. 나는 그것을 위해 아래의 코드를 시도하지만 아무 것도 반환하지 않는 것으로 보이며 요청이 완료되지 않는다.

@RequestMapping(value = "files/{fileName}") 
public void downloadPDF(@PathVariable("fileName") String fileName, HttpServletRequest req, HttpServletResponse res) { 
    logger.debug("Http request URL is " + req.getRequestURL()); 
    res.setContentType("application/pdf"); 
    URL pdf = null; 
    try { 
     pdf = new URL(req.getRequestURL().toString()); 
     BufferedInputStream is = new BufferedInputStream(pdf.openStream()); 

     IOUtils.copy(is, res.getOutputStream()); 
     res.flushBuffer();  
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

왜 그런지 이해할 수 있습니까?

감사합니다.

답변

4

파일을 다운로드 할 수 있도록하려면 'Content-Disposition'헤더를 응답에 추가해야합니다.

헤더 형식은 다음과 같습니다. Content-Disposition : attachment; filename = "fname.ext"

다음과 같이 시도해보십시오. 코드 아래

res.addHeader("Content-Disposition", "attachment; filename=\"document.pdf\""); 
+0

같은 결과입니다. 요청이 완료되지 않습니다. 파일 다운로드와 관련하여 내 코드에 문제가 있습니까? – skip

+0

파일 길이로 콘텐츠 길이 헤더를 설정해보십시오. – BeWarned

+0

파일을 찾는 코드에 몇 가지 문제가있었습니다. 감사 :) – skip

1

사용 : 그것은 잘 작동하고 내 응용 프로그램에서

InputStream is = new FileInputStream(new File(..abcolute path...))); 

response.setHeader("Content-Disposition", "attachment;filename=\""+filename+".pdf"+"\""); 
IOUtils.copy(is, response.getOutputStream());  
       response.flushBuffer(); 

.

관련 문제