[Spring] 파일 업로드
리트리버J
·2020. 11. 7. 09:08
728x90
1. pom.xml에 Maven dependency를 추가해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<!-- ******* 파일업로드 ******* -->
<!-- 파일업로드 관련 라이브러리 추가 -->
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
|
cs |
2. jsp에서 form태그의 enctype의 속성을 "multipart/form-data"로 맞춰준다.
1
2
3
4
|
<form action="pInsert.do" method="post" enctype="multipart/form-data" >
<input type='file' id='upload' name='upload'/>
<button>등록완료</button>
</form>
|
cs |
3. Controller에서 받아준다.
* 주의 *
input 태그로 업로드 한 파일의name과 객체에 파일명(~.jpg)으로 넣을 변수명이 같다면,
Product 객체의 변수를 인식하여, String으로 File객체가 들어가 버린다..!
그렇기 때문에 @RequestParam과 jsp의 name을 "_pic"따위로 다르게 해준 다음,
setter를 통해 File객체의 getOriginalFilename()메소드를 통하여 설정해준다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
@RequestMapping(value = "pInsert.do")
public String insertProduct(Model model,Product product,
HttpServletRequest request,
@RequestParam(name="pic", required=false) MultipartFile file) {
// @RequestParam어노테이션을 이용한 업로드 파일 접근
// form의 enctype이 multipart/form-data로 작성되어있어야하고, method=POST이어야한다.
// MultipartResolver가 multipartFile객체를 컨트롤러로 전달할 수 있다.
// * 주의 *
// input 태그로 업로드 한 파일의name과 객체에 파일명(~.jpg)으로 넣을 변수명이 "pic"으로 같다면,
// Product 객체의 pic변수를 인식하여, String pic으로 File객체가 들어가 버린다..!
// 그렇기 때문에 @RequestParam과 jsp의 name을 "_pic"따위로 다르게 해준 다음,
// setter를 통해 File객체의 getOriginalFilename()메소드를 통하여 설정해준다.
// 상품이미지 등록
if(!file.getOriginalFilename().equals("")) {
// 서버에 업로드 해야한다.
String renamePic = saveFile(file,request);
if(renamePic != null) {
product.setPic(file.getOriginalFilename());
product.setRenamePic(renamePic);
}
}
int result = pService.insertProduct(product);
if(result==1) {
return "user/product/productDetail";
}else {
return "user/product/productDetail";
}
}
|
cs |
3. ~을 해준다.
3. ~을 해준다.
3. ~을 해준다.
3. ~을 해준다.
3. ~을 해준다.
728x90
'Spring > Spring Web' 카테고리의 다른 글
[Spring] WebSocket을 이용한 1:1 채팅 / 실시간 알림 - [1] (0) | 2021.01.02 |
---|---|
[Spring / WebSocket] Java Websocket을 이용한 1:1 채팅방, 단체 채팅방 만들기 - 1 [Handler / Controller / JavaScript / url 셋팅] (15) | 2020.12.05 |
[Spring / JSON / SQL] 다중행 SQL을 JSONArray에 담아 jsp에 parse 후 출력하기. (0) | 2020.11.07 |
[Spring] Controller에서 Controller로 데이터 전달하기 (0) | 2020.11.07 |
[Spring] 회원가입, 로그인 비밀번호 암호화 처리 (0) | 2020.11.07 |