Apache Tika
다양한 문서( Word, Excel, PDF 등) 및 멀티미디어(JPEG, MP4 등) 파일에서 콘텐츠 및 메타데이터를 추출하기 위한 Tool kit
build.gradle.kts에 의존성 추가
- tika-core: 파일 타입 체크(단순 파일 타입 체크는 core만 의존성 추가하면 됨)
- tika-parsers: 파일 구문 분석(파일 안의 내용 체크)
implementation ("org.apache.tika:tika-core:2.9.0")
implementation ("org.apache.tika:tika-parsers-standard-package:2.9.0")
💡파일 내부의 여러 content type 확인은 tika-parsers가 필요!! (예: zip 파일)
확장자가 임의로 변경된 파일인지 확인하기 위한 준비
테스트에 사용할 파일을 생성한다. → 텍스트 파일의 확장자를 png로 변경
확장자를 png 파일로 변경하면 이미지로 인식되지만 메모장으로 열어보면 텍스트가 있다.
위 파일의 MIME type을 확인할 코드를 다음과 같이 작성한다.
class FileTypeParser {
companion object {
private val tika = Tika()
fun parser(file: MultipartFile) {
val detectedMimeType = tika.detect(file.inputStream)
if (detectedMimeType != file.contentType) {
throw IllegalArgumentException("이미지 파일이 아닙니다.")
}
}
}
}
서버를 실행해 위 파일을 업로드 요청하면 다음과 같은 결과를 볼 수 있다.
임의로 변경하지 않은 이미지(.png) 파일을 업로드하면 contentType과 MIME type이 일치하기 때문에 예외를 발생시키지 않는다.
'TIL(Today I Learned)' 카테고리의 다른 글
TIL - IntelliJ에서 Git Flow 사용 (0) | 2024.07.16 |
---|---|
TIL - Connection Pool (0) | 2024.07.10 |
TIL - Apache JMeter를 이용한 성능 테스트 (0) | 2024.07.08 |
TIL - 조회수 증가 테스트 코드에서 조회수가 반영되지 않는 문제 해결 (0) | 2024.07.05 |
TIL - Spring Boot에서 In-memory Cache 적용 (0) | 2024.07.04 |