스프링10_파일
회원가입+프로필사진
설정
pom.xml
<!-- fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- commons IO -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
servlet-context.xml
pom.xml
<!-- fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<!-- commons IO -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
servlet-context.xml
<!-- file -->
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="defaultEncoding" value="UTF-8"/>
<beans:property name="maxUploadSize" value="10000000"/> <!-- 1024 * 1024 * 10 == 10메가바이트 -->
<beans:property name="maxUploadSizePerFile" value="5000000"></beans:property>
</beans:bean>
뷰
join.jsp
<body>
<h1>회원가입</h1>
<form action="join" method="post" enctype="multipart/form-data">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pwd"><br>
닉네임 : <input type="text" name="nick"><br>
프로필 사진 : <input type="file" name="profileList" multiple accept=".jpg, .png"><br>
<input type="submit" value="가입하기">
</form>
</body>
VO
MemberVo
public class MemberVo {
private String id;
private String pwd;
private String nick;
private List<MultipartFile> profileList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public List<MultipartFile> getProfileList() {
return profileList;
}
public void setProfileList(List<MultipartFile> profileList) {
this.profileList = profileList;
}
// *** *** ***
public boolean isFileOk() {
if(profileList.get(0).isEmpty() || profileList.size() < 1 || profileList == null || profileList.get(0) == null) {
return false;
}
return true;
}
@Override
public String toString() {
return "MemberVo [id=" + id + ", pwd=" + pwd + ", nick=" + nick + ", profileList=" + profileList + "]";
}
}
컨트롤러
MemberController
import com.kh.app16.member.vo.MemberVo;
@Controller
@RequestMapping("member")
public class MemberController {
@GetMapping("join")
public String join() {
return "member/join";
}
@PostMapping("join")
public String join(MemberVo m) throws IllegalStateException, IOException {
List<MultipartFile> list = m.getProfileList();
//파일 존재 여부 체크
if(m.isFileOk()) {
return "redirect:/errorPage";
}
//파일 값들 확인
System.out.println("size: "+ list.size());
System.out.println("첫번째 파일이 비어있나요? "+list.get(0).isEmpty());
for(MultipartFile p : list) {
System.out.println("=======");
System.out.println("p: "+p);
System.out.println("p파일비어있나요? "+ p.isEmpty());
System.out.println("p 이름: "+p.getOriginalFilename());
System.out.println("p 크기: "+p.getSize());
System.out.println("p 타입: "+p.getContentType());
//저장, File - java.io
// File file = new File("경로", "내가 설정하고 싶은 이름");
File file = new File("D:\\uploadForSpring", p.getOriginalFilename());
//사용자가 올린 파일의 바이트를 읽어서
//저 파일에다가 바이트를 넣어줘야 함
p.transferTo(file);
}
return "redirect:/";
}
}
<body>
<h1>회원가입</h1>
<form action="join" method="post" enctype="multipart/form-data">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pwd"><br>
닉네임 : <input type="text" name="nick"><br>
프로필 사진 : <input type="file" name="profileList" multiple accept=".jpg, .png"><br>
<input type="submit" value="가입하기">
</form>
</body>
MemberVo
public class MemberVo {
private String id;
private String pwd;
private String nick;
private List<MultipartFile> profileList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getNick() {
return nick;
}
public void setNick(String nick) {
this.nick = nick;
}
public List<MultipartFile> getProfileList() {
return profileList;
}
public void setProfileList(List<MultipartFile> profileList) {
this.profileList = profileList;
}
// *** *** ***
public boolean isFileOk() {
if(profileList.get(0).isEmpty() || profileList.size() < 1 || profileList == null || profileList.get(0) == null) {
return false;
}
return true;
}
@Override
public String toString() {
return "MemberVo [id=" + id + ", pwd=" + pwd + ", nick=" + nick + ", profileList=" + profileList + "]";
}
}
컨트롤러
MemberController
import com.kh.app16.member.vo.MemberVo;
@Controller
@RequestMapping("member")
public class MemberController {
@GetMapping("join")
public String join() {
return "member/join";
}
@PostMapping("join")
public String join(MemberVo m) throws IllegalStateException, IOException {
List<MultipartFile> list = m.getProfileList();
//파일 존재 여부 체크
if(m.isFileOk()) {
return "redirect:/errorPage";
}
//파일 값들 확인
System.out.println("size: "+ list.size());
System.out.println("첫번째 파일이 비어있나요? "+list.get(0).isEmpty());
for(MultipartFile p : list) {
System.out.println("=======");
System.out.println("p: "+p);
System.out.println("p파일비어있나요? "+ p.isEmpty());
System.out.println("p 이름: "+p.getOriginalFilename());
System.out.println("p 크기: "+p.getSize());
System.out.println("p 타입: "+p.getContentType());
//저장, File - java.io
// File file = new File("경로", "내가 설정하고 싶은 이름");
File file = new File("D:\\uploadForSpring", p.getOriginalFilename());
//사용자가 올린 파일의 바이트를 읽어서
//저 파일에다가 바이트를 넣어줘야 함
p.transferTo(file);
}
return "redirect:/";
}
}
import com.kh.app16.member.vo.MemberVo;
@Controller
@RequestMapping("member")
public class MemberController {
@GetMapping("join")
public String join() {
return "member/join";
}
@PostMapping("join")
public String join(MemberVo m) throws IllegalStateException, IOException {
List<MultipartFile> list = m.getProfileList();
//파일 존재 여부 체크
if(m.isFileOk()) {
return "redirect:/errorPage";
}
//파일 값들 확인
System.out.println("size: "+ list.size());
System.out.println("첫번째 파일이 비어있나요? "+list.get(0).isEmpty());
for(MultipartFile p : list) {
System.out.println("=======");
System.out.println("p: "+p);
System.out.println("p파일비어있나요? "+ p.isEmpty());
System.out.println("p 이름: "+p.getOriginalFilename());
System.out.println("p 크기: "+p.getSize());
System.out.println("p 타입: "+p.getContentType());
//저장, File - java.io
// File file = new File("경로", "내가 설정하고 싶은 이름");
File file = new File("D:\\uploadForSpring", p.getOriginalFilename());
//사용자가 올린 파일의 바이트를 읽어서
//저 파일에다가 바이트를 넣어줘야 함
p.transferTo(file);
}
return "redirect:/";
}
}
파일이 비어있으면?
- 객체가 존재하므로
size() == 1
이다. - 파일업로드 여부 ==
isEmpty()
로 확인하자!
Author And Source
이 문제에 관하여(스프링10_파일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lecharl/스프링10저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)