파게로그

[Spring MVC] POST 입력 - 파일 저장하기(물리경로 얻기) 본문

콤퓨타 왕기초/Spring

[Spring MVC] POST 입력 - 파일 저장하기(물리경로 얻기)

파게 2021. 5. 3. 07:56

File saveFile = new File(realPath);

multipartFile.transferTo(saveFile);

 

home directory의 실제 경로를 그대로 써버리면 배포하고 나면 문제가 생기니까...

 

ServletContext 얻기

1. 메서드에서만 사용하는 경우에 주로 사용하는 방법

ctx를 얻기 위해서 메서드 파라미터에 HttpServletRequest req를 넣어두고

ServletContext ctx = req.getServletContext();

 

2. 멤버 변수로 두기

@Autowired //Spring은 IoC Container에 ServletContext를 담아둔다

private ServletContext ctx;

 

String webPath = "/static/upload";
String realPath = ctx.getRealPath(webPath);

File savePath = new File(realPath);
if (!savePath.exists())
  savePath.mkdirs();  // mkdir()과 달리 mkdirs()는 중간에 없는 경로까지 다 만들어준다

// realPath += "\\" + fileName;   이렇게 하면 Windows 외에는 문제가 생김
realPath += File.separator + fileName; // 현재 시스템의 구분자

File saveFile = new File(realPath);

file.transferTo(saveFile);

 


 

파일도 마찬가지로..

 

<input type="file" name="files />

<input type="file" name="files />

 

이렇게 2개 이상 input이 같은 name을 가지고 있으면

 

MultipartFile[] files 로 배열로 받는다.

 

 

 

Comments