예전에 파일 업로드 기능을 구현할 때는 이런 절차 없이 파일 업로드를 구현했었던 것 같은데 이런 오류가 나서 검색해보니 브라우저에서 로컬 파일을 접근하지 못하게 하는 보안상의 이유 때문이었다.
검색을 해봤는 데 tomcat의 server.xml에
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="kssfbiz" path="/" reloadable="true" source="org.eclipse.jst.jee.server:kssfbiz"/>
<Context docBase="D:/FileUpload/kssfbiz/" path="/kssfbiz/upload" reloadable="true" />
</Host>
이런 식으로 경로를 추가해주는 방식을 써서 해결한다고 한다
문제는... 내가 제대로 하지 못한 건지 그래도 오류가 났다.
String fileUploadFolder = "/fileUploadFolder"; // WebContent 폴더 안에 만들어준 폴더
realPath = request.getSession().getServletContext().getRealPath(fileUploadFolder);
String[] split = realPath.split("wtpwebapps");
realPath = split[1]; // realPath에서 프로젝트 경로만 남김
한참을 고민하다가 혹시 몰라서 프로젝트 경로로 접근을 하면 접근이 되지 않을까하는 생각에 해봤는데 일단은 파일을 불러오는 데 성공했다.
다른 사람들 글을 보면 절대 경로로 파일 잘만 올리는 것 같은 데 어째서 상대 경로로 접근해야만 성공하는 지는 잘 모르겠다...