SpringBoot 환경에서 진행되어
@RestController 로 파일 데이터를 받고 보내고 있다
이미지 파일 전송 받식은 이전글을 참고하길 바란다
https://greed-yb.tistory.com/265
Maven
<!-- thumbnailator -->
<dependency>
<groupId>net.coobird</groupId>
<artifactId>thumbnailator</artifactId>
<version>0.4.14</version>
</dependency>
Controller
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.UUID;
import net.coobird.thumbnailator.Thumbnails;
@RestController
@Tag(name="Swagger upload", description = "upload")
@RequestMapping("/upload/*")
public class ImageUpload {
// 파일 업로드 경로
final Path FILE_ROOT = Paths.get("./").toAbsolutePath().normalize();
private String uploadPath = FILE_ROOT.toString() + "/upload/image/";
@Operation(summary = "프로필 이미지 업로드 ", description = "프로필 이미지를 서버에 업로드한다.")
@PostMapping("/profileUpload")
public ResponseEntity<?> profileUpload(@RequestParam MultipartFile file) throws Exception{
if(file.isEmpty()){
return ResponseEntity.badRequest().body("파일이 비어있습니다. 확인해주세요.");
}
try{
// 업로드 파일의 이름
String originalFileName = file.getOriginalFilename();
// 업로드 파일의 확장자
String fileExtension = originalFileName.substring(originalFileName.lastIndexOf("."));
// 업로드 된 파일이 중복될 수 있어서 파일 이름 재설정
String reFileName = UUID.randomUUID().toString() + fileExtension;
// 프로필(증명사진) 이미지 117 x 156
String profileImageName = "profile_"+reFileName;
Path resizedFilePath = Paths.get(uploadPath, profileImageName);
try(InputStream inputStream = file.getInputStream()) {
Thumbnails.of(inputStream).size(117, 156).toFile(resizedFilePath.toFile());
}
// 상단 프로필 이미지 32 x 32
String topFileImageName = "topFile_"+reFileName;
Path resizedTopFilePath = Paths.get(uploadPath, topFileImageName);
try(InputStream inputStream = file.getInputStream()) {
Thumbnails.of(inputStream).size(32, 32).toFile(resizedTopFilePath.toFile());
}
// 파일이름을 재전송
return ResponseEntity.ok(profileImageName);
}catch (IOException e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("이미지 업로드 실패하였습니다.");
}
}
}
TEST
'개발 > Java' 카테고리의 다른 글
[JAVA] FileUpload(이미지, 파일, 삭제) 및 Download 구현하기 (0) | 2024.07.15 |
---|---|
[JAVA] CPU , Memory , Disk 사용량 확인하기 (0) | 2024.07.09 |
[JAVA] 파일 생성, 삭제, 쓰기, 이름변경, 이동, 복사, 읽기 하기 (1) | 2024.05.21 |
[JAVA] REST API 구현하기(API KEY) - Postman 이용 (0) | 2023.09.07 |
[Java] JDBC Connection - 자바와 DB 연결하기 (0) | 2023.06.08 |
댓글