[spring/framework] 스프링, 파일업로드 한 개일 때와 다수의 파일 업로드 시키는 방법에 대해서!

2022. 2. 23. 23:54비즈니스 탐색/개발

728x90
반응형

# 스프링 파일업로드(input type="file" 1개일때)

form.java jsp파일 생성

파일업로드를 위한 encytype / method 지정

 

<form action="/spring/file/upload.nhnenctype="multipart/form-data" method="post"

id: <input type="text" name="id" /> <br />

file: <input type="file" name="save" /> <br />

<input type="submit" name="전송" /> <br />

</form>

 

# /file/upload.nhn을 위한 upload.java 생성

a 태그를 이용하여 다운로드 링크를 만들어준다. 

?fileName=${fileName}은 filename 파라미터 값을 받아오는 것으로 이제 FileController과 Controller을 만들어 추가해보자.

 

<a href="/spring/file/download.nhn?fileName=${fileName}"> 

<b>다운로드~~~~~</b> 

</a>

 

# FileController 생성

file.upload  패키지를 생성해서 FileController.java 클래스를 만들자.

임포트 할 것! 

 

@Controller

public class FileController {

@RequestMapping("/file/form.nhn")

public String form() { return "/0921/form.jsp"; }  - 위에 생성해 놓은 form.jsp

 

 

@RequestMapping("/file/upload.nhn")

public String upload(MultipartHttpServletRequest multi) { 

MultipartFile file = multi.getFile("save"); 

String fileName = file.getOriginalFilename(); 

 

File copy = new File("//Users//mi//Desktop//save//" + fileName );  -  주소는 본인 폴더 주소경로를 쓸 것! 

★파일카피: 여기서 업로드 된 것이 아닌 파일이름이 똑같은 껍데기일뿐. 확장자는 이미지인데 비어있는 것을 알자! 

 

try{ -

file.transferTo(copy); - transferTo

}catch(Exception e) {}

 

multi.setAttribute("fileName", fileName); 

 

String name = multi.getParameter("name");

System.out.println(file);

System.out.println(name);;

 

return "/0921/upload.jsp" - 에 생성해 놓은 upload.jsp

}

# 위의 업로드 파일 한 개 일때 지정한 코드, 실행한 결과 

http://localhost:8000/spring/file/form.nhn에서 파일을 추가하고 제출을 누르게 되면 

업로드 시킨 파일이 저장되는 폴더인 save에 제대로 업로드 되는 것을 알 수 있다.

 

# 이제 업로드 추가 파일이 여러개인 경우를 실행해보자

FileController.java  클래스에서 List로 추가수정하는 것인데,

 

기존 FileController.java에서 @RequestMapping("/file/upload.nhn"

 

public String upload(MultipartHttpServletRequest multi) {  부분!!

아래 내용을 새롭게 추가 수정하자.

 

List<MultipartFile> fileList = multi.getFile

("save"); 

for(MultipartFile file : fileList) {

String fileName = file.getOriginalFilename();

File copy = new File("//Users//mi//Desktop//save//" + fileName );

try{

file.transferTo(copy);

}catch(Exception e) {}

}

 

위 처럼 수정 후 form.jsp에서 input type="file"을 몇 개 더 추가 시킨 후 실행시켜보면, 파일들이 제대로 올라가는 것을 확인할 수 있다.

 

 

728x90
반응형