✨✨✨✨✨ 중요 ! ! !
[파일 업로드 폼 방식 요청 처리를 하기전, 준비사항]
[1]. pom.xml에 commons-fileupload, commons-io 라이브러리 의존 관계 등록
✨ maven project update를 진행하여 업데이트한다.
✨ 업데이트를 진행하지 않는 경우, 내가 등록한 의존관계가 제대로 적용되지않아 라이브러리를 사용하는데 있어 에러가 발생할 수 있습니다
✨ 업데이트를 진행할 때, 하단 오른쪽에 progress Bar 형태가 다운로드 되고 있는 형태로 바뀌고, 100%로 바뀌면 다운로드가 완료되어 적용이 완료된 것입니다.
✨ Maven Project Update를 진행하였는데 내가 작성하고 있는 프로젝트에서 에러가 발생한다?
✨ Clean! Clean! Clean! Clean! ! ! ! !
[2]. web.xml에 모든 경로에 대해서 MultipartFilter를 등록합니다.
✨ 스프링에서 제공하는 MultipartFilter를 이용합니다.
✨✨✨✨✨ 위와 같은 설정을 진행하였는데도 에러가 나는 경우 조치방법
[3]. servers > context/xml 로 이동하여 Context 태그 옵선을 추가합니다.
✨[ allowCasualMultipartparsing="true" path="/" ] 옵션 추가 (Context 태그내)
✨ex)
<Context allowCasualMultipartparsing="true" path="/" > ..... </Context>
[요청과 처리]
요청 : /registerFile01
처리 : String registerFile01(MultipartFile picture) throws Exception
[요청과 처리]
요청 : /registerFile02
처리 : String registerFile02(String userId, String password, MultipartFile picture) throws Exception
[요청과 처리]
요청 : /registerFile03
처리 : String registerFile03(Member member, MultipartFile picture) throws Exception
[요청과 처리]
요청 : /registerFile04
처리 : String registerFile04(FileMember fileMember) throws Exception
[요청과 처리]
요청 : /registerFile05
처리 : String registerFile05(MultipartFile picture, MultipartFile picture2) throws Exception
[요청과 처리]
요청 : /registerFile06
처리 : String registerFile06(List pictureList) throws Exception
[*** 리스트로 가져오는 경우 null발생]
[요청과 처리]
요청 : /registerFile07
처리 : String registerFile07(MultiFileMember multiFileMember) throws Exception
//7-2
[요청과 처리]
요청 : /registerFile07
처리 : String registerFile07(MultiFileMember multiFileMember) throws Exception
[요청과 처리]
요청 : /registerFile08
처리 : String registerFile08(MultipartFile[] pictureList) throws Exception
<h4>8. 파일업로드 폼 방식 요청 처리</h4>
<p>1) 파일 업로드 폼 파일 요소값을 스프링 MVC가 지원하는 MultipartFile 매개 변수로 처리한다</p>
<form action="/registerFile01" method="post" enctype="Multipart/form-data">
<input type="file" name="picture"/>
<input type="submit" value="업로드"/>
</form><br/>
<!-- //20221128 -->
<p>2) 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 MultipartFile 매개 변수와 문자열 매개변수로 처리한다</p>
<form action="/registerFile02" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="picture"/>
<input type="submit" value="업로드"/>
</form><br/>
<p>3) 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 MultipartFile 매개 변수와 자바빈즈 매개변수로 처리한다</p>
<form action="/registerFile03" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="picture"/>
<input type="submit" value="업로드"/>
</form><br/>
<p>4) 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 FileMember 타입의 자바빈즈 매개변수로 처리한다</p>
<form action="/registerFile04" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="picture"/>
<input type="submit" value="업로드"/>
</form><br/>
<p>5) 여러 개의 파일 업로드를 폼 파일 요소 값을 여러개의 MultipartFile 매개변수로 처리한다</p>
<form action="/registerFile05" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="picture"/>
<input type="file" name="picture2"/>
<input type="submit" value="업로드"/>
</form><br/>
<p>
6) 여러 개의 파일 업로드를 폼 파일 요소 값을 MultipartFile 타입의 요소를 가진 리스트 컬렉션 타입 매개변수로 처리한다
<font style="color: red;">받아올 수 없다!</font>
</p>
<form action="/registerFile06" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="pictureList[0]"/>
<input type="file" name="pictureList[1]"/>
<input type="submit" value="업로드"/>
</form><br/>
<!-- 6)번하고 동일한 폼이긴 하나 요청하는 URL과 받는 타입이 다르다 -->
<p>7) 여러 개의 파일 업로드 폼 파일 요소 값과 텍스트 필드 요소값을 MultipartFileMember 타입의 자바빈즈 매개변수로 처리한다</p>
<form action="/registerFile07" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="pictureList[0]"/>
<input type="file" name="pictureList[1]"/>
<input type="submit" value="업로드"/>
</form><br/>
<!-- 사진파일 다중 선택시 다중으로 넘어감!!! -->
<p>7-2) 파일 업로드 폼 파일 요소 값과 텍스트 필드 요소값을 MultipartFileMember 타입의 자바빈즈 매개변수로 처리한다</p>
<form action="/registerFile07" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="pictureList" multiple="multiple"/>
<input type="submit" value="업로드"/>
</form><br/>
<p>8) 파일 업로드 폼 파일 요소 값과 텍스트 필드 요소값을 MultipartFile 타입의 배열 매개변수로 처리한다</p>
<form action="/registerFile08" method="post" enctype="Multipart/form-data">
<p>userId : <input type="text" name="userId" value="hongkd"> </p>
<p>password : <input type="text" name="password" value="1234"> </p>
<input type="file" name="pictureList" multiple="multiple"/>
<input type="submit" value="업로드"/>
</form><br/>
// 8. 파일업로드 폼 방식 요청 처리
// 파일 업로드 폼 방식
// 1)
// 파일 업로드 폼 파일 요소값을 스프링 MVC가 지원하는 MultipartFile 매개 변수로 처리한다
@RequestMapping(value = "/registerFile01", method = RequestMethod.POST)
public String registerFile01(MultipartFile picture){
logger.info("registerFile01");
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
return "success";
}
//20221128
// 2)
// 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 MultipartFile 매개 변수와 문자열 매개변수로 처리한다
@RequestMapping(value = "/registerFile02", method = RequestMethod.POST)
public String registerFile02(String userId, String password, MultipartFile picture){
logger.info("registerFile02");
logger.info("userId" + userId);
logger.info("password" + password);
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
return "success";
}
// 3)
// 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 MultipartFile 매개 변수와 자바빈즈 매개변수로 처리한다
@RequestMapping(value = "/registerFile03", method = RequestMethod.POST)
public String registerFile03(Member member, MultipartFile picture){
logger.info("registerFile03");
logger.info("member.getUserId() : " + member.getUserId());
logger.info("member.getPassword() : " + member.getPassword());
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
return "success";
}
// 4)
// 파일 업로드 폼 파일 요소값과 텍스트 필드 요소값을 FileMember 타입의 자바빈즈 매개변수로 처리한다
@RequestMapping(value = "/registerFile04", method = RequestMethod.POST)
public String registerFile04(fileMember fileMember){
logger.info("registerFile04");
logger.info("member.getUserId() : " + fileMember.getUserId());
logger.info("member.getPassword() : " + fileMember.getPassword());
MultipartFile picture = fileMember.getPicture();
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
return "success";
}
// 5)
// 여러 개의 파일 업로드를 폼 파일 요소 값을 여러개의 MultipartFile 매개변수로 처리한다
@RequestMapping(value = "/registerFile05", method = RequestMethod.POST)
public String registerFile05(MultipartFile picture, MultipartFile picture2 ){
logger.info("registerFile05");
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
logger.info("OriginalFilename" + picture2.getOriginalFilename());
logger.info("Size" + picture2.getSize());
logger.info("ContentType" + picture2.getContentType());
return "success";
}
// 6)
// 여러 개의 파일 업로드를 폼 파일 요소 값을 MultipartFile 타입의 요소를 가진 리스트 컬렉션 타입 매개변수로 처리한다
@RequestMapping(value = "/registerFile06", method = RequestMethod.POST)
public String registerFile06(List<MultipartFile> pictureList ){
// 컬렉션 리스트로는 이미지 파일을 가져올 수 없다.
logger.info("registerFile06");
logger.info("pictureList.size() " + pictureList.size());
for(int i = 0; i < pictureList.size(); i++) {
logger.info("OriginalFilename" + pictureList.get(i).getOriginalFilename());
logger.info("Size" + pictureList.get(i).getSize());
logger.info("ContentType" + pictureList.get(i).getContentType());
}
return "success";
}
// 7) , 7-2)
// 여러 개의 파일 업로드 폼 파일 요소 값과 텍스트 필드 요소값을 MultipartFileMember 타입의 자바빈즈 매개변수로 처리한다
// 객체 내에 존재하는 key(변수명)로 파일을 받을 수 있다.
// 7)은 input file 2개로 객체에 mapping
// 7-2)는 multiple 요소 이용하여 개게에 mapping
@RequestMapping(value = "/registerFile07", method = RequestMethod.POST)
public String registerFile07(MultiFileMember multifileMember){
logger.info("registerFile07");
List<MultipartFile> pictureList = multifileMember.getPictureList();
logger.info("registerFile07 pictureList.size() : " + pictureList.size());
for(MultipartFile picture : pictureList) {
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
}
return "success";
}
// 8)
// 파일 업로드 폼 파일 요소 값과 텍스트 필드 요소값을 MultipartFile 타입의 배열 매개변수로 처리한다
@RequestMapping(value = "/registerFile08", method = RequestMethod.POST)
public String registerFile08(MultipartFile[] pictureList){
logger.info("registerFile08");
logger.info("registerFile08 pictureList.length : " + pictureList.length);
for(MultipartFile picture : pictureList) {
logger.info("OriginalFilename" + picture.getOriginalFilename());
logger.info("Size" + picture.getSize());
logger.info("ContentType" + picture.getContentType());
}
return "success";
}
}