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
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
attempting to assign weaker access privilege (private, public) (0) | 2022.09.19 |
---|---|
서블릿으로 받은 MultipartFile에 대한 NoSuchFileException (0) | 2022.09.19 |
413 Request Entity Too Large - 큰 용량의 파일을 전송하기 (0) | 2022.09.05 |
Cannot load driver class: org.mariadb.jdbc.Driver 에러 (0) | 2022.05.31 |
자바에서 데이터 비교할때 .equeal()과 == 차이 (0) | 2022.05.18 |