2018. 4. 20. 23:24
반응형

톰캣에 스프링 프레임워크나 jsp로 웹 프로젝트를 만들어서 배포를 하고 파일을 업로드해야 할 경우가 있다.

이 때 realpath를 이용해서 업로드를 하게 되면 톰캣 폴더 내의 webapps 폴더 안의 배포 폴더 내부에 파일이 업로드되게 된다.

한번 배포하고 끝내면 상관이 없지만 다음에 수정하고 war파일을 재배포하면 업로드된 파일이 지워진다.

이럴 경우 webapps 폴더가 아닌 리눅스 내의 다른 폴더에 파일을 업로드하고 그것을 가져다 쓰는 것이 좋다.


우선 파일을 업로드하는 자바 소스에서 업로드 경로를 리눅스 내의 원하는 경로로 작성한다.

리눅스 내에서 원하는 곳으로 가서 pwd 명령어를 치면 경로를 파악할 수 있다.


파일을 올릴때는 주로 MultipartFile을 이용하여 컨트롤러에서 받아서 transferTo를 이용하여 원하는 위치로 전송한다.

이때 경로를 예를 들면 "/home/upload" 로 지정하여 업로드하면 저 폴더로 파일이 업로드된다.



이렇게 업로드한 파일을 다시 해당 웹프로젝트에서 사용을 해야하는데 그러려면 톰캣 설정을 건드려야한다.


tomcat 폴더 안의 conf 폴더에서 server.xml을 편집해야 한다.

안의 내용 중에서 <Host></Host> 사이에 다음 태그를 추가한다.

<Context docBase="/home/upload" path="/resources/upload"/>


스프링 mvc 프로젝트를 생성하면 기본으로 /resources 폴더가 servlet-context.xml 설정에 잡혀있어서 resources 경로로 잡는게 무난해 보인다.

혹시 원하는 경로로 path를 잡았는데 경로를 못읽어올 때는 servlet-context.xml에 경로 설정을 해줘야 할 것 같은 느낌이 든다.

(이건 테스트를 제대로 안해봐서 확실하지 않다.)

반응형