반응형
섬네일
Thumbnailator 라이브러리를 사용하하여 섬네일 파일 생성
설정
▶pom.xml
<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator --> <dependency> <groupId>net.coobird</groupId> <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency>
이미지 파일인지 구분
섬네일은 이미지 파일에만 적용할 수 있기 때문에 이미지 파일인지 구분한다.
아래 코드에 이미지 파일인 경우 섬네일 파일을 생성하는 것을 확인할 수 있다.
private boolean checkImageType(File file) { try { String contentType = Files.probeContentType(file.toPath()); return contentType.startsWith("image"); } catch (IOException e) { e.printStackTrace(); } return false; } @PostMapping("/uploadAjaxAction") public void uploadAjaxPost(MultipartFile[] uploadFile) { String uploadFolder = "D:\\upload"; // make folder -------- File uploadPath = new File(uploadFolder, getFolder()); if (uploadPath.exists() == false) { uploadPath.mkdirs(); } // make yyyy/MM/dd folder for (MultipartFile multipartFile : uploadFile) { String uploadFileName = multipartFile.getOriginalFilename(); uploadFileName = uploadFileName.substring(uploadFileName.lastIndexOf("\\") + 1); log.info("only file name: " + uploadFileName); UUID uuid = UUID.randomUUID(); uploadFileName = uuid.toString() + "_" + uploadFileName; try { File saveFile = new File(uploadPath, uploadFileName); multipartFile.transferTo(saveFile); // image 파일인지 체크하는 checkImageType 메소드 호출 if (checkImageType(saveFile)) { //맞는 경우 섬네일 파일 생성 FileOutputStream thumbnail = new FileOutputStream(new File(uploadPath, "s_" + uploadFileName)); Thumbnailator.createThumbnail(multipartFile.getInputStream(), thumbnail, 100, 100); thumbnail.close(); } } catch (Exception e) { e.printStackTrace(); } // end catch } // end for }
파일 업로드 시 이미지 파일인 경우 원본 파일은 그대로 저장되고 이름이 's_'로 시작하는 섬네일 파일이 생성된다.
- checImageType() 메소드
- 이미지 파일을 구분할 수 있도록 구현
- Thumbnailator
- InputStream과 java.io.File 객체를 이용해 파일을 생성하였다.
- 생성시 뒤에 사이즈에 대한 부분을 파라미터로 width, height를 지정할 수 있다.
반응형
'ETC' 카테고리의 다른 글
Spring + Ajax 파일 다운로드 시 Internet Explorer, Edge에서 한글이름 깨짐 (0) | 2022.09.26 |
---|---|
Spring + Ajax 파일 다운로드 (0) | 2022.09.26 |
Spring + Ajax 중복된 파일 이름 해결 (0) | 2022.09.25 |
Spring + Ajax 파일 확장자, 크기 제한 (Ajax) (0) | 2022.09.25 |
Spring + Ajax 파일 업로드 (0) | 2022.09.25 |