Notice
Recent Comments
Recent Posts
«   2024/05   »
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
Today
Total
관리 메뉴

기록 > 기억

[File upload] 파일 업로드 경로 프로젝트 외부에 두기 본문

에러일지

[File upload] 파일 업로드 경로 프로젝트 외부에 두기

BY SON 2017. 11. 8. 15:04

● 에러 발생

포트폴리오 작업 중에 로컬에서 개발 서버로 war 파일을 배포 했음

그런데 업로드했던 이미지들이 엑스박스가 뜸

 

● 에러 발생 원인

로컬에서 개발 서버로 배포 할 때, 개발 서버에 있던 배포 본을 지우고 새로 배포하는데

이 때 개발 서버에 있던 업로드 파일들은 삭제되고 DB에는 파일 정보만 남아 이미지 엑스박스가 뜬것임!

 

● 해결 방안

프로젝트 외부에 파일 업로드 폴더를 따로둬서 톰캣 clean 또는 배포 시에 파일 삭제 방지

 

1) 프로퍼티 작성 (파일업로드 경로)

upload.path=D:/workspace/upload/

 

2) 프로퍼티 파일 읽어 해당 경로로 파일 업로드

 

   ① 프로젝트 내부에 파일 업로드의 경우 이미지 가져옴

       src/main/webapp/upload/file.png → <img src="<c:url value='/upload/file.png'/>">

     

   ② 프로젝트 외부에 파일 업로드의 경우 보안상 이미지 못 가져옴 (웹에서 로컬폴더로 접근불가)     

      <img src="D:/workspace/upload/file.png"> → Not allowed to load local resource

 

3) server.xml 파일 업로드 경로 context 등록

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
	<Context docBase="moviestar" path="/moviestar" reloadable="true" source="org.eclipse.jst.jee.server:moviestar"/>
      	<Context docBase="D:/workspace/upload/" path="/moviestar/upload" reloadable="true" />
</Host>

 

   ① /moviestar가 프로젝트 contextPath

 

   ② D:/workspace/upload 폴더를 /moviestar/upload 라는 URL로 접근하겠다는 의미

       ex) D:/workspace/upload/file.png → http://localhost:8080/moviestar/upload/file.png

 

Comments