

java.io.IOException: java.io.FileNotFoundException: C:\Users\YimMinJi\AppData\Local\Temp\tomcat.8094.10654873818695069196\work\Tomcat\localhost\ROOT\upload_c18d2b4f_f4ec_4a4f_a527_448912ab48cc_00000012.tmp (지정된 파일을 찾을 수 없습니다)
이런 오류가 뜨면 ApiController나, Service를 들여다 봐야한다.
글쓴이 같은 경우는 ApiController에서
// 등록글
@ResponseBody
@PostMapping("/place")
public Map<String, String> createPlace(@ModelAttribute PlaceDto dto, @RequestParam("file") MultipartFile file
) {
Map<String, String> resultMap = new HashMap<String, String>();
resultMap.put("res_code", "404");
resultMap.put("res_msg", "장소 등록 중 오류가 발생하였습니다.");
try {
// 파일이 있을 경우 처리
if (file != null && !file.isEmpty()) {
String originalFilename = file.getOriginalFilename();
if (originalFilename != null && !originalFilename.isEmpty()) {
String savedFileName = fileService.placeUpload(file);
if (savedFileName != null) {
dto.setOri_pic_name(originalFilename);
dto.setNew_pic_name(savedFileName);
}
} else {
resultMap.put("res_msg", "파일 이름이 유효하지 않습니다.");
return resultMap;
}
}
// 장소 정보 생성
if (placeService.createPlace(dto, file) > 0) {
resultMap.put("res_code", "200");
resultMap.put("res_msg", "장소가 성공적으로 등록되었습니다.");
} else {
resultMap.put("res_msg", "장소 등록에 실패하였습니다.");
}
} catch (Exception e) {
e.printStackTrace();
}
return resultMap;
}
한번 등록하고, Service에서
// 장소 등록
public int createPlace(PlaceDto dto, MultipartFile file) {
int result = -1;
// 필수 값 검증
if (dto.getPlace_name() == null || dto.getPlace_name().isEmpty()) {
throw new IllegalArgumentException("장소명은 필수 입력 항목입니다.");
}
if (dto.getPlace_status() == null || dto.getPlace_status().isEmpty()) {
throw new IllegalArgumentException("장소 상태는 필수 입력 항목입니다.");
}
try {
// 가장 큰 placeNo 값을 찾아서, 없으면 0을 할당하고, 있으면 +1
Long maxPlaceNo = placeRepository.findMaxPlaceNo(); // 가장 큰 placeNo 값 찾기
Long nextPlaceNo = (maxPlaceNo == null) ? 0L : maxPlaceNo + 1; // 없으면 0, 있으면 +1
Employee e = employeeRepository.findByempId(dto.getEmp_id());
dto.getMod_date();
// 파일 업로드 처리
String newPicName = null;
String oriPicName = null;
if (file != null && !file.isEmpty()) {
oriPicName = file.getOriginalFilename();
newPicName = fileService.placeUpload(file); // 파일 업로드
}
Place p = Place.builder()
.placeNo(nextPlaceNo)
.employee(e)
.placeName(dto.getPlace_name())
.placeLocation(dto.getPlace_location()) // 위치
.placeContent(dto.getPlace_content()) // 설명이 null일 경우 처리
.placeStatus(dto.getPlace_status()) // 상태
.placeStarttime(dto.getPlace_start_time()) // 사용 가능 시작 시간
.placeEndtime(dto.getPlace_end_time()) // 사용 가능 종료 시간
.unuseableReason(dto.getUnuseable_reason()) // 사용 불가 사유
.unuseableStartDate(dto.getUnuseable_start_date()) // 사용 불가 시작 날짜
.unuseableEndDate(dto.getUnuseable_end_date()) // 사용 불가 종료 날짜
.oriPicName(dto.getOri_pic_name() != null ? dto.getOri_pic_name() : "Default oriPicName")
.newPicName(dto.getNew_pic_name() != null ? dto.getNew_pic_name() : "Default newPicName")
.regDate(dto.getReg_date()) // 등록일
.modDate(dto.getMod_date()) // 수정일
.build();
placeRepository.save(p);
result = 1;
}catch(Exception e){
e.printStackTrace();
}
return result;
}
한번더 등록하려고 해서, 파일을 한번만 등록하면되는데, 두번 등록이 되기때문에 오류가 발생하는거였다.
이럴경우에 선택을 해야한다.
Apicontroller에서 등록을 하게 할것인지,
Service에서 등록을 하게 할것인지 정한 다음에 프로젝트를 진행하면 오류가 해결될것이다.