Apache Tika와 MultipartFile

iseon_u·2023년 5월 27일
3

Spring

목록 보기
33/33
post-thumbnail

Apache Tika와 MultipartFile


Apache Tika

  • 다양한 파일 형식의 컨텐츠를 추출하고 분석하는 기능을 제공
  • 그중 MIME Type 체크 기능을 업로드 파일의 유형을 확인하기 위해 Spring에서 사용해 보았다.

MIME Type List

Complete MIME Types List - FreeFormatter.com

Gradle Dependency

implementation 'org.apache.tika:tika-core:2.5.0'

Apache Tika MIME Type 체크 예시 코드

public class MimeTypeExample {
    public static void main(String[] args) {
        Tika tika = new Tika();

        // 파일 경로
        File file = new File("path/to/file");

        try {
            // MIME 타입 체크
            String mimeType = tika.detect(file);
            System.out.println("MIME 타입: " + mimeType);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 예를 들어 확장자가 png인 이미지를 검사하면 image/png 같이 MIME Type을 확인할 수 있다.

그런데 MultipartFilegetContentType() 메서드를 사용하면 MIME Type을 확인할 수 있다
게다가 Spring에서 기본으로 제공하기 때문에 따로 종속성을 추가하지 않고 사용이 가능하다

MultipartFile 인터페이스

  • Spring에서 제공하는 파일 업로드를 처리하기 위한 인터페이스

MultipartFile MIME Type 체크 예시 코드

@Controller
public class FileUploadController {

    @PostMapping("/upload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file) {
        if (!file.isEmpty()) {
            String contentType = file.getContentType();
            System.out.println("MIME 타입: " + contentType);
            return "redirect:/success";
        } else {
            return "redirect:/error";
        }
    }
}
  • Apache Tika와 마찬가지로 image/png 같은 형식의 MIME Type을 반환한다.

그럼 이 둘의 차이는 뭘까?

확장자 유무에 따른 차이

  1. 확장자를 명시했을 때

  1. 확장자가 파일 이름에 없을 때

  • 확장자를 명시했을 땐 둘 다 정확한 MIME Type을 반환한다.
  • 하지만 확장자가 없을 땐 Tika의 detect() 메서드만 정확한 MIME Type을 반환한다.

정확한 MIME Type 확인이 요구될 때엔 Tika를 사용하는 것이 좋아 보인다.

profile
🧑🏻‍💻 Hello World!

0개의 댓글