-
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