본문 바로가기
웹개발지식쌓기

[back] java에서 MultipartFile 여러개 받기

by developer_j 2022. 12. 12.
728x90
반응형

text 파일 java에서 받기

< html > 

<form id="fileForm" name="fileForm" method="post" action="/test/addTestFile.do" enctype="multipart/form-data">
	<input type="file" name="filename">
	<button>전송</button>
</form>

 

< java >

	@RequestMapping("/addTestFile")
	public void addTestFile(MultipartHttpServletRequest file) {
		Map<String,MultipartFile> fileMap = file.getFileMap();
		Iterator<Entry<String,MultipartFile>> itr = fileMap.entrySet().iterator();
		MultipartFile myFile;
		
		while(itr.hasNext()) {
			Entry<String, MultipartFile> entry= itr.next();
			myFile = entry.getValue();
			System.out.println(myFile.getName());
			System.out.println(myFile.getOriginalFilename());
		}
	}

 

< 결과 >

 

자바에서 multipartFile 받는 내가 아는 유일한 방법은

- VO 객체에 multipartFile 변수를 선언해서 받아오는 것

이었는데 http request 객체와 비슷하게 생긴 녀석이 있었당

 

1. 여러개의 파일 다른 이름으로 받기 - getFileMap()

일반 requset 객체처럼 request URL도 얻어올 수 있고, getFile() 또는 getFileMap() 으로 파일 객체를 Map 형태로 얻어올 수 있는데, 한 개의 파일보다는 파일 여러개를 받을 때 유용할 것 같다.

 

 

보다시피,

getFile() --> MultipartFile 리턴

getFileMap() --> MultipartFile의 Map을 리턴한다.

<form id="fileForm" name="fileForm" method="post" action="/test/addTestFile.do" enctype="multipart/form-data">
	<input type="file" name="filename1">
	<input type="file" name="filename2">
	<input type="file" name="filename3">
	<input type="file" name="filename4">
	<input type="file" name="filename5">
	<button>전송</button>
</form>

 

Map을 통해, 원하는 파일들.. 즉, filename1과 filename2를 각각 가져올 수 있다.

음,,, 사용 예시를 생각해보자면 "필수서류" 와 "부가 서류" 를 받을 수 있을 것 같다.

 

2. 여러개의 파일 같은 이름으로 받기 - getFiles("fileName")

 

또는, 굳이 Map 을 쓰지않고, MultipartHttpServletRequest에 getFiles 함수를 써서 여러개의 파일을 같은 이름으로 받을 수도 있는 듯 하다. 물론 그럴려면 아래의 형태로 보내야 되겠다.

 

<form id="fileForm" name="fileForm" method="post" action="/test/addTestFile.do" enctype="multipart/form-data">
	<!-- type이 "file" 인 input의 name이 중복으로 받고 싶은 경우.-->
	<input type="file" name="filename">
	<input type="file" name="filename">
	<input type="file" name="filename">
	<input type="file" name="filename">
	<input type="file" name="filename">
	<button>전송</button>
</form>

 

첨부파일을 여러개 등록하도록 하고 싶을 때, 파일을 [추가] 하도록 하게 하고 싶을 때 등등 사용 할 수 있을 듯

 


 

편하게 하려면 기존에 하던 것 처럼 VO에 변수를 선언하고 넣을 수도 있겠지만, 이 방법을 모르고 같은 방법만 고집하는 것보다는 한번 학습해보는 게 좋은 것 같다.

알지만 안쓰는 것과, 몰라서 안쓰는 것은 다르니까 최대한 이것저것 많이 해보고 싶다.

HAJIMAN... 마음은 학구열이 있지만 실제 손가락은 자꾸 편한 것만 찾으려고 해서 큰일이다.

728x90
반응형