2014-07-09 4 views
0

메일에서 첨부 파일을 다운로드하는 것과 같은 장소에서 저장할 수 있도록 저장 창이 표시되기를 바랍니다. 스프링 컨트롤러 :파일을 바탕 화면에 저장

@RequestMapping(value="/getFile", method = RequestMethod.GET) 
     public ModelAndView getFile(HttpServletRequest request, HttpServletResponse response) { 

      ModelAndView mav = new ModelAndView(); 
      //logic to get the data from database 

} 

감사합니다.

답변

0

첫 번째 대답

@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET) 
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) { 
    try { 
     // get your file as InputStream 
     InputStream is = ...; 
     // copy it to response's OutputStream 
     IOUtils.copy(is, response.getOutputStream()); 
     response.flushBuffer(); 
    } catch (IOException ex) { 
     log.info("Error writing file to output stream. Filename was '" + fileName + "'"); 
     throw new RuntimeException("IOError writing file to output stream"); 
    } 

} 

두 번째 옵션

@RequestMapping(value = "/files/{fileName}", method = RequestMethod.GET) 
public HttpEntity<byte[]> createPdf(
       @PathVariable("fileName") String fileName) throws IOException { 

    byte[] documentBody = this.pdfFramework.createPdf(filename); 

    HttpHeaders header = new HttpHeaders(); 
    header.setContentType(new MediaType("application", "pdf")); 
    header.set("Content-Disposition", 
        "attachment; filename=" + fileName.replace(" ", "_")); 
    header.setContentLength(documentBody.length); 

    return new HttpEntity<byte[]>(documentBody, header); 
} 

@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET) 
@ResponseBody 
public FileSystemResource getFile(@PathVariable("file_name") String fileName) { 
    return new FileSystemResource(myService.getFileFor(fileName)); 
} 
+0

내가 AB에서 옵션 중 하나를 사용할 수 있습니다 세 번째 옵션 비켜? 하지만 사용자가 로컬 드라이브에 저장하고 싶은 위치를 저장하고 싶을 때 확실하지는 않습니다. @ ankur-singhal – participantjava

+0

@participantjava Pls가 위의 방법을 시도하면 사용자가 원하는 곳을 저장할 수있는 다운로드 가능한 창으로 나타납니다. –

+0

ok. 내가 3 번째 옵션을 시도하길 원하나요?하지만 저장할 특정 파일이 없습니다. 위의 게시물에서 볼 수 있듯이, 바이트 [] 데이터, 파일 이름, 파일 확장명을 데이터베이스에서 가져옵니다. 그 파일에 byte [] 데이터를 쓰고 파일명 등을 써서 파일을 만들 필요가있다. @ ankur-singhal – participantjava

관련 문제