2012-07-11 3 views
0

JBoss가 응용 프로그램 서버로 실행되고 내 HD에 어딘가에 PDF 파일이 있는데, 사용자가 특정 작업을 클릭 할 때 생성됩니다. 파일이 여기에 있다고 가정 해 봅시다 : C:/PDF/doonot/10.07.2012/doonot.pdf. 이 파일을 어떻게 다운로드 할 수 있습니까? 이미 CSV 파일로 만들었지 만 PDF로하는 방법을 모르겠습니다.Java에서 로컬 PDF 파일을 다운로드하는 방법은 무엇입니까?

도움을 주시면 감사하겠습니다.

+3

어떻게 CSV 파일을 만들었습니까? –

+0

다운로드 할 파일을 제공하기 위해 어떤 종류의 웹 응용 프로그램을 사용하고 있습니까? 아니면 FTP 서버처럼 JBoss를 사용하고 있습니까? – MaVRoSCy

+0

아니요, 파일은 서버에 저장되어 있습니다. – doonot

답변

0

내가 Is there a common way to download all types of files in jsp?

에 쓴이 같은 것을 사용할 수 있습니다

public HttpServletResponse getFile (HttpServletRequest request ,HttpServletResponse httpServletResponse, .......){ 
      HttpServletResponse response = httpServletResponse; 
      InputStream in =/*HERE YOU READ YOUR FILE AS BinaryStream*/ 

      String filename = ""; 
      String agent = request.getHeader("USER-AGENT"); 
      if (agent != null && agent.indexOf("MSIE") != -1) 
      { 
      filename = URLEncoder.encode(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8"); 
      response.setContentType("application/x-download"); 
      response.setHeader("Content-Disposition","attachment;filename=" + filename); 
      } 
      else if (agent != null && agent.indexOf("Mozilla") != -1) 
      { 
      response.setCharacterEncoding("UTF-8"); 
      filename = MimeUtility.encodeText(/*THIS IS THE FILENAME SHOWN TO THE USER*/, "UTF8", "B"); 
      response.setContentType("application/force-download"); 
      response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); 
      } 


      BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); 
      byte by[] = new byte[32768]; 
      int index = in.read(by, 0, 32768); 
      while (index != -1) { 
       out.write(by, 0, index); 
       index = in.read(by, 0, 32768); 
      } 
      out.flush(); 

      return response; 
} 

UPDATE :

// read local file into InputStream 
InputStream inputStream = new FileInputStream("c:\\SOMEFILE.xml"); 
:

망가이로의 InputStream을 사용할 수 있다는 것을 잊지

또는 이것도 사용하십시오

//read from database 
Blob blob = rs.getBlob(1); 
InputStream in = blob.getBinaryStream(); 
+0

어떻게 작동하는지 설명해 주시겠습니까? "여기 파일을 BinaryStream으로 읽습니다." – doonot

+0

@ dooonot 대답을 – MaVRoSCy

+0

Thx로 업데이트했습니다. 하지만 이건 BinaryStream이 아니지? – doonot

0

pdf를 읽고 서블릿을 작성하여 응답 출력 스트림에 쓸 수 있습니다. 여기

Exemple : http://www.java-forums.org/blogs/servlet/668-how-write-servlet-sends-file-user-download.html

+0

좋은 의견을 입력 해보십시오. Thx – doonot

+0

"이 문서를 여는 동안 오류가 발생했습니다. 파일이 손상되어 복구 할 수 없습니다."... – doonot

+0

파일의 시작 부분이나 끝 부분에 원하지 않는 데이터를 추가하거나 플러시하지 않을 수도 있습니다. 서블릿으로 간단한 텍스트 파일을 다운로드하여 현재 진행중인 작업을 확인하십시오. – Anthony

0

예 구스타프는 권리입니다. Java는 파일 유형을 구분하지 않습니다. 파일은 csv 용으로 만든 파일이라면 PDF 용으로도 작동해야합니다.

+0

아니요. 파일이 손상되어 수리 할 수 ​​없다고 말합니다. – doonot

관련 문제