소스는 돌아가지 않아요.. ^^ 대략적으로 이렇다~
// 파일정보 전달 Class
public class FileCommand {
private String originalFileNm;
private String storedFileNm;
private Long fileSize;
private String fileExtension;
private byte[] fileInfo;
}
// MultipartFile 형식으로 업로드 받은 메서드
public void fileUpload(MultipartFile uploadFile) {
FileCommand fileCommand = new FileCommand();
// 확장자
String fileExtension = "." + FilenameUtils.getExtension(uploadFile.getOriginalFilename());
// 저장파일명
String localDateTimeNow = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
String storedFileNm = localDateTimeNow + fileExtension;
agreeFileCommand.setOriginalFileNm(uploadFile.getOriginalFilename()); // 원본 파일명
agreeFileCommand.setStoredFileNm(storedFileNm); // 저장파일명
agreeFileCommand.setFileSize(uploadFile.getSize()); // 파일 사이즈
agreeFileCommand.setFileExtension(fileExtension); // 파일 확장자
agreeFileCommand.setFileInfo(uploadFile.getBytes()); // 파일정보
// @PostMapping - api 호출 공통
uploadApi(@RequestBody FileCommand command);
}
// 파일 수신 API
@PostMapping("fileSave")
public void fileSave(@RequestBody FileCommand file) {
File file = fileSave(file.getFilePath(), file.getFileNm(), file.fileInfo() );
}
/** 파일 업로드 */
public File fileSave(String filePath, String fileNm, byte[] fileInfo) {
// 파일업로드 처리
File tmpFile = new File(filePath + fileNm);
try {
FileUtils.copyToFile(new ByteArrayInputStream(fileInfo), tmpFile);
} catch (IOException e) {
log.error("동의서파일 저장실패 : " + filePath + storedFileNm);
}
return new File(filePath + storedFileNm);
}
반응형
'개발 > Java, Spring' 카테고리의 다른 글
Spring Boot 스레드 사용 동기 처럼 사용하기. (2) | 2024.05.14 |
---|---|
Spring Boot 에서 Redis 사용해 볼까? (0) | 2024.05.14 |
[JPA] Spring JPA CascadeType 종류 (0) | 2023.08.25 |
AOP로 컨트롤러 권한체크하기 (0) | 2023.01.16 |
Spring Security SameSite 설정 (0) | 2022.12.19 |