ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • multipartfile ie브라우저 파일업로드
    spring framework 2020. 8. 9. 15:02

    크롬과 같은 경우 파일을 업로드할때 fullpath가 기입되지않는다 왜냐 fullpath는 보안상 위험한 풀 경로를 노출시키기때문이다. 따라서 크롬은 fakepath를 부여해준다

     

    하지만 ie와 같은 경우 인터넷옵션을 수정하지 않으면 파일 업로드시 fullpath를 가져온다

     

    이러한 경우 문제가 생긴다. 

     

    왜냐

     

    난 단독파일만 가져오고 싶지만 그 파일의 모든 경로까지 함께 파일로 만들어져 서버로 넘어오기때문에 파일이 

    비즈니스 로직에서 설정한 경로로 저장되지가 않는다

     

    예를 들면 

     

    파일 업로드시 resources/upload 경로에 파일을 적재시키도록 비즈니스 로직을 구현하여놓았다

    하지만 파일을 서버로 던질때 그 파일의 위치인 D:/picture/animal.jpg 이렇게 fullpath로 던져버린다

     

    따라서 파일이 저장될때 resources/upload에 저장되지 않고 resources/upload/D:/picture/animal.jpg 

    이런 이상한 경로로 animal.jpg가 저장이 된다...

     

    이를 해결하기 위해선 서버에서 fullpath가 들어오더라도 앞 경로 부분을 모두 삭제하고 단독파일명만 가져와야한다

     

    그 방법으로는

    MultipartFile upload_file = writeContentBean.getUpload_file(); 를 사용하여 서버로 넘어온 데이터를 multipartFile 객체에 넣어두고 (파일은 MultipartFile객체형식으로 넘어옴 ex)org.springgramework.web.multipart.support.standardmultipart...@7039de)

    String uploadoriginalname = upload_file.getOriginalFilename(); 를 사용하여 그 객체의 originalname값을 string 변수에 넣어둔다 (객체형식으로 넘어온 파일의 원래 이름을 가져옴 크롬과같은경우 animal.jpg 와같이 단독파일명만 가져오지만 ie는  D:/picture/animal.jpg 와 같이 fullpath를 가져옴 )

     

    따라서

    fullpath에서 단독파일명 데이터만 가져오기위해

    String file_name = System.currentTimeMillis() + "_" + uploadoriginalname.substring(uploadoriginalname.lastIndexOf("\\")+1);

    uploadoriginalname.substring 함수를 사용합니다 

     

     

    'spring framework' 카테고리의 다른 글

    유효성 검사  (0) 2020.08.10
    spring legacy project에러  (0) 2020.08.09
    several ports 문제  (0) 2020.08.04
    SpringJUnit4classRunner에러  (0) 2020.07.17
    스프링 정리  (0) 2020.07.09
Designed by Tistory.