쌓고 쌓다

List<MultipartFile> 빈 파일 문제, MultipartFile null 체크 본문

프로그래밍/spring

List<MultipartFile> 빈 파일 문제, MultipartFile null 체크

승민아 2023. 8. 3. 10:55

List<MultipartFile>

게시글 작성시 파일을 선택하지 않았을떄 자꾸 빈 파일이 들어가는 이슈가 있다.

@PostMapping("/poster/write")
public String write(@RequestParam(required = false) List<MultipartFile> files) throws IOException {
}

 

https://stackoverflow.com/questions/46934460/null-check-for-multipart-file

 

Null check for multipart file

I'm processing two different multipart files in my Spring controller. Both files are then sent on to a service to set the entities. But a NullPointerException is being thrown if both or one is nul...

stackoverflow.com

SpringBoot에서 이제 파일을 선택하지 않아도 항상 채워지는 부분이 있다고한다.

정확한 문서를 찾고싶었지만 안보인다..

 

그래서 아래의 방법으로 해결했다.

public List<UploadFile> storeFiles(List<MultipartFile> multipartFiles) throws IOException {
	List<UploadFile> storeResult = new ArrayList<>();

    for(MultipartFile multipartFile : multipartFiles) {
        if(multipartFile.getSize() > 0) {
            ...
        }
    }
	return storeResult;
}

List<MultipartFile>을 List<UploadFile>로 변환하는 과정에서 파일의 크기가 0이 넘어가는 파일만 처리하도록 수정했다.

 

MultipartFile null 체크

왜 자꾸 빈 파일이 들어가는지 null 체크와 isEmpty()를 해보다가 발견했다.

public String write(@RequestParam(required = false) MultipartFile files) throws IOException {
    System.out.println("files empty = " + files.isEmpty());
    if(files==null) {
        System.out.println("files null");
    } else {
        System.out.println("files no null");
    }
}

 

MultipartFile 선택을 하지 않았을때 출력

 

MultipartFile 선택을 했을때 출력

결론은 isEmpty로 파일 선택 여부를 확인하자.

List<Multipart> 또한 마찬가지이다 null인 경우는 없다.

 

Comments