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... 마음은 학구열이 있지만 실제 손가락은 자꾸 편한 것만 찾으려고 해서 큰일이다.
'웹개발지식쌓기' 카테고리의 다른 글
[back] 이클립스 eXERD 컬럼명 관리 - 용어사전 사용 (0) | 2023.01.04 |
---|---|
[back] java에서 MultipartFile 한개 받기 (0) | 2022.12.14 |
[front] 자바스크립트 브라우저 차단 (0) | 2022.12.07 |
[back] Java JSON 2뎁스 이상 구조 만들기 (0) | 2022.11.30 |
[front] 없는 함수 호출하면 그 아래 부분은 싹 다 작동 중지된다.. (0) | 2022.11.25 |