본문 바로가기
JAVA & KOTLIN

Spring zip 파일 다운로드

by nozee 2021. 6. 15.
반응형
@RestController
@RequestMapping(value="/download")
public class X30_Controller {
    private Logger log = LoggerFactory.getLogger(this.getClass());
    
    @Value("#{fileConfig['webapp.upload.pos.version']}")
    private String version_file_path;
    
    @Resource(name="XmlFileLogger")
    private XmlFileLogger xmlFilelog;
    
    
    @RequestMapping(value="/X30S")
    public ResponseEntity<?> X30(HttpServletRequest request
                          , HttpServletResponse response
                          , @RequestParam (value ="versionId"       , required=true) String versionId
                          ) throws Exception {
        XmlManager xml = new XmlManager();
        HttpHeaders headers = new HttpHeaders();
        File file;
        InputStreamResource resource;
        try {
         
            file = new File(version_file_path+versionId);
            headers.add("Cache-Control","no-cache, no-store, must-revalidate");
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            headers.add(HttpHeaders.CONTENT_DISPOSITION,"attachment; filename=\""+versionId+".zip\"");
            
            resource = new InputStreamResource(new FileInputStream(file));
        }catch(Exception e) {
            log.error(e.toString());
            return ResponseEntity.ok()
                                 .contentType(MediaType.valueOf("text/xml; charset="+Constants.RES_ENCODING))
                                 .body(xml.fnSendReturnTelex("X30S", "9996", "파일이 존재하지 않습니다."));
        }
        
        xmlFilelog.TelexFileWrite(request, "X30S", "", "");
        return ResponseEntity.ok()
                             .headers(headers)
                             .contentLength(file.length())
                             .contentType(MediaType.parseMediaType(MediaType.APPLICATION_OCTET_STREAM_VALUE))
                             .body(resource);
    }
}
반응형

'JAVA & KOTLIN' 카테고리의 다른 글

[KOTLIN] Kotlin의 check와 require  (2) 2024.12.14
Kotlin - List to Array, Array to List  (0) 2021.11.06
JAVA XML 파싱으로 데이터 가져오기  (0) 2020.11.30
JAVA RestTemplate 사용  (0) 2019.09.18
JAVA redis 연결  (0) 2019.09.17