@ResponseBody
@PostMapping("/file/upload")
public ApiSuccess upload(
HttpSession session,
@RequestParam(value = "accept", required = false) String accept,
@RequestParam(value = "isProductImage", required = false) boolean isProductImage,
@RequestParam(value = "limit", required = false, defaultValue = "0") long limit,
@RequestParam(value = "width", required = false, defaultValue = "0") int width,
@RequestParam(value = "height", required = false, defaultValue = "0") int height,
@RequestParam(value = "maxWidth", required = false, defaultValue = "0") int maxWidth,
@RequestParam(value = "maxHeight", required = false, defaultValue = "0") int maxHeight,
@RequestPart MultipartFile file
) throws Exception {
IpssUserDto ipssUser = (IpssUserDto) session.getAttribute("ipssUser");
String entrNo = ipssUser.getEntrNo();
ApiSuccess<Map<String, Object>> result = new ApiSuccess<>();
String filename = file.getOriginalFilename();
long size = file.getSize();
String contentType = file.getContentType();
String extension = FilenameUtils.getExtension(filename).toLowerCase();
log.debug("accept : {}", accept);
if (accept.length() > 0) {
boolean pass = Arrays.asList(accept.split(",")).contains("." + extension);
log.debug("====> {}, {}, {}, {}", accept, extension, pass, Arrays.asList(accept.split(",")));
if (!pass) {
throw new ProductFileUploadException("파일 형식 " + accept + " 파일만 등록 가능합니다.");
}
}
log.debug("limit : {}", limit);
if (limit > 0) {
if (size > limit) {
throw new ProductFileUploadException("용량 " + limit + "KB 이하 파일만 등록 가능합니다.");
}
}
log.debug("width x height : {} x {}}", width, height);
if (!extension.equals("zip") && width > 0 && height > 0) {
BufferedImage bi = ImageIO.read(file.getInputStream());
if (bi.getWidth() < width || bi.getHeight() < height) {
throw new ProductFileUploadException("이미지는 최소 " + width + "x" + height + "이상 등록 가능합니다.");
}
}
log.debug("maxWidth x maxHeight : {} x {}}", maxWidth, maxHeight);
if (!extension.equals("zip") && maxWidth > 0 && maxHeight > 0) {
BufferedImage bi = ImageIO.read(file.getInputStream());
if (bi.getHeight() > maxHeight) {
throw new ProductFileUploadException("이미지 세로 사이즈는 " + maxHeight + "px 이하로 등록 가능합니다.");
}
}
result.setData(tempFileUploadService.saveTempFile(isProductImage, entrNo, file));
return result;
}
'JAVA' 카테고리의 다른 글
[JAVA] HTTPS 요청 시 SSL 인증서 오류 무시하기 (2) | 2020.08.06 |
---|---|
[JAVA] POI 엑셀파일 생성시, "XXX의 내용에 문제가 있습니다." (2) | 2020.07.28 |
[Java] 객체지향 생활 체조 (0) | 2020.02.25 |
[Java] Rest API (0) | 2020.02.21 |
[Java] DAO,DTO,Entitiy Class (0) | 2020.02.16 |