JAVA & KOTLIN
Spring zip 파일 다운로드
nozee
2021. 6. 15. 22:27
반응형
@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);
}
}
반응형