IT/자바, 스프링

servlet으로 받은 multipartfile의 위치 지정

thesse 2022. 9. 15. 16:40
300x250
반응형

 

    public File convert(MultipartFile file) throws IOException {
        File convFile = new File(URLDecoder.decode(file.getOriginalFilename(), "UTF-8"));
        convFile.createNewFile();
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

MultipartFile을 File로 변환하는 함수이다.

 

이때 fos.write(file.getBytes()) 에서 익셉션이 발생할 때가 있다.

java.nio.file.NoSuchFileException: /tmp/tomcat.7000.14785466979597776131/work/Tomcat/localhost/ROOT/upload_eeb5ea37_b1f0_496b_9bcc_86877f4b17b8_00000008.tmp

기본적으로 스프링은 서블릿으로 받은 파일을 (우분투일 경우) /tmp 밑에 생성한다.

tomcat.7000.뒤의 번호는 랜덤하게 생성되고 서버가 내려갈 때 초기화되는데

서버를 처음 올리고 나면 이 폴더가 생성되지 않아 익셉션이 나는 것일 수 있다. (아닐수도...)

 

어쨌든 랜덤하게 생성되는 폴더를 찾기 어려우니 템프 파일 생성 위치를 지정해보기로 했다.

 

application.yaml

spring:
  servlet:
    multipart:
      max-file-size: 4GB  //파일 최대 사이즈 제한
      max-request-size: 4GB  //요청 최대 사이즈 제한
      location: /home/ubuntu/myproject/tmp  //경로 지정

 

여기서 맨 아래 location에 서버의 절대경로를 지정해주면 

이제 /home/ubuntu/myprojcec/tmp/upload_eeb5ea37_b1f0_496b_9bcc_86877f4b17b8_00000008.tmp 와 같이 파일이 생성된다.

 

그런데 이렇게 돌려도 NoSuchFile 익셉션은 계속 발생한다... 뭐가 원인일까 ㅜ

 

 

 

 

 

+++> 해결!!

2022.09.19 - [IT/자바, 스프링] - 서블릿으로 받은 MultipartFile에 대한 NoSuchFileException

 

300x250
반응형