Tika로 MimeType 체크
spring에서 파일을 업로드할 시 파일 확장자를 제한하기 위해 MimeType을 체크하려 한다. Tika를 이용하면 파일 확장자가 아닌 파일 내용을 기반으로 판단하기 때문에, 확장자를 변경해도 MimeType을 알아낼 수 있다.
1. Maven을 이용해 Tika 추가
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.14</version>
</dependency>
pom.xml에 Tika를 추가한다. 다른 버전을 추가하고 싶으면 링크에서 확인.
2. 업로드 컨트롤러에 코드 구현
public void fileUpload(MultipartFile file) {
// ...
Input Stream inputStream;
try {
inputStream = file.getInputStream();
String mimeType = new Tika.detect(inputStream);
// 허용하는 MIME 타입인지 확인
if (!(mimeType.equals("jpg"))) {
// 오류 출력
} else {
// 파일 업로드
}
}
}
FilenameUtils로 확장자 구하기
확장자를 구할 때 .을 기준으로 substring을 하는 경우가 많지만, 아파치에서 제공해주는 클래스를 이용하면 간단하게 확장자를 추출할 수 있다.
String uploadFile = new String("foo.jpg")
FilenameUtils.getName(uploadFile) // foo.jpg
FilenameUtils.getBaseName(uploadFile) // foo
FilenameUtils.getExtension(uploadFile) // jpg
'일단 해보기' 카테고리의 다른 글
[Ubuntu] Ubuntu 16.04에 DNS 설정 (0) | 2020.01.02 |
---|---|
[Ubuntu] Ubuntu 16.04의 connect: Network is unreachable 오류 (0) | 2020.01.02 |
[Python] Class에 대한 수다 (1) | 2019.09.28 |
파이썬 __str__ 메쏘드 (0) | 2019.07.14 |
파이썬 가상환경 설정 (0) | 2019.06.29 |