728x90

request 타입 에러를 해결하고 나서


form 태그에 enctype="multipart/form-data" 추가하고


servlet-context.xml에 multipartResolver도 등록되었다.



스프링 파일업로드는 편리하게도


File file = new File(경로,파일이름);


한 뒤에


request.getFile("파라미터이름").transferTo(file);


만 하면 파일업로드가 되지만


경로를 잡을때 조심해야 한다.



아래는 회원가입 기능을 구현하는 가입 메소드인데

private final static String path = "/resources/uploaded";



 public void signinProcess(MultipartHttpServletRequest request){
  String id = null;
  String password = null;
  
  try {
   id = new String(request.getParameter("id").getBytes(),"utf-8");
   password = new String(request.getParameter("password").getBytes(),"utf-8");
   
  } catch (UnsupportedEncodingException e1) {
   e1.printStackTrace();
  }
  String filePath = request.getSession().getServletContext().getRealPath(path);
  
  String fileName = "default.png";
  
  System.out.println("filePath : " + filePath);
  
  System.out.println("id :  " + id +"  password : " + password);
  
  if(!request.getFile("photo").isEmpty()){
   System.out.println("사진이 존재합니다.");
   
   
   
   fileName = id + ".png";
   File file = new File(filePath,fileName);
   
   try {
    request.getFile("photo").transferTo(file);
    
   } catch (IllegalStateException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }
   
  }
  
  System.out.println("fileName : " + fileName);
 }


request.getSession().getServletContext().getRealPath(realPath);



realPath 변수의 실제 경로인


D:\dev\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Project01\resources\uploaded\


는 직접 저 폴더로 들어가보면 알지만


존재하지 않아서


FileNotFoundException이 발생하게 된다.



그래서 가져온 실제경로를 가지고 파일이 저장될 경로를 잘 설정하자


필자는


프로젝트 폴더의 webapp/resources/uploaded 아래에 저장되도록


filePath를 수정하였다.



String sep = File.separator;
  System.out.println("sep : " + sep);
  

아 경로 지정할때 \ 은 File.separator로 경로구분자를 가져와서 사용해야한다.


  filePath = "C:"+sep+"Users"+sep+"do"+sep+"git"+sep+"Project01"+sep+"src"+sep+"main"+sep+"resources"+sep+"uploaded";


경로 구분자로 filePath를 고쳐주고 다시 폼으로 입력시키면


해당 경로에 파일이 잘 올라온다.

300x250

+ Recent posts