반응형
@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 |