1.이미지 등록(post)
Todo
- 사진들이 등록된다.(fileName)
- 사진이 null 아니면 이름 불러오기
- uuid는 중복 피함
- 저장 경로 설정(imagePath)
- 섬네일(라이브러리 처리)
- 이미지면 썸네일 기준치로 생성
- 에러면 메세지 output
@PostMapping('/upload')
public List<ImageResultDTO ##업로드 처리> upload( ImageFileDTO fileDTO){
if(image.getFiles() != null){
final List<ImageResultDTO> result = new ArrayList<>();
fileDTO.getFiles().forEach(multiFile -> {
String origianlName = multiFile.getOriginalFileName();
String uuid = UUID.randomUUID().toString();
Path savePath = Paths.get(imagePath, uuid+"_"+originalName);
boolean img = false;
try{
multiFile.transferTo(savePath);
if(Files.probContentType(savePat).startsWith("image"){
img = true;
File thumbnail = new File(imagePath, "s_"+uuid+"_"+originalName);
Thumbnailator.createThumbnail(savePath.toFile(), thumbnail, 200, 200);
}
} catch (IOException e){
log.error(e.getMessage());
)
list.add(ImageResultDTO.builder.uuid(uuid).imgName(originalName).build());
});
return list;
}
return null;
}
2. 이미지 조회
Todo
- 리소스 찾기
- HttpHeader 생성(new)
- header에 콘텐츠 타입(MIME), 파일 유형 제공
3-1. 없으면 서버 에러 (InternalServerError)
3-2. 있으면 헤더(headers) 및 바디 추가(body)
@GetMapping("/view/{fileName}")
public ResponseEntity<Resource> viewFile(@PathVariable String fileName){
Resource resource = new FileSystemResource(imagePath+File.separtor+fileName);
String resourceName = resourec.getFilename();
log.info(resourceName)
HttpHeaders headers = new HttpHeaders();
try{
headers.add("Content-Type", Files.probeContentType(resource.getFile().toPath()));
} catch(Exception e) {
return ResponseEntity.internalServerError().build();
}
return ResponseEntity.ok().header(String.valueOf(headers)).)body(resource);
}
3. 이미지 삭제
Todo
- 파일 자원 가져오기
- HashMap 생성(String, Boolean) - resultMap
- Boolean 타입 생성
- 파일 타입 프로브
4-1. 섬네일 있을 경우 제거
4-2. 없을 경우 에러 메세지 출력
- resultMap 출력
@DeleteMapping("/remove/{fileName}")
public Map<String, Boolean> removeFile(@PathVariable String fileName){
Resource resource = new FileSystemResource(iamgePath+File.Seprator+"s_"+fileName);
Map<String, Boolean> resultMap = new HashMap<>();
Boolean remove = false;
try{
String contentType = Files.probContentType(resource.getFile().toPath());
remove = resource.getFile().delete();
if(contentType.startsWith("image"){
File thumbnail = new File(imagePath+File.separator+"s_"+fileName);
thumbnail.delet();
} catch (IOException e){
log.error(e.getMessage());
}
resultMap.put("result", remove);
return resultMap;
}