1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java】Apache Tikaでファイルの内容からMIMEタイプを推測する

Last updated at Posted at 2021-03-06

動作環境

Java openjdk 11.0.7
Spring boot 2.4.2
Gradle 6.5

実装方法

依存関係

デフォルトではTikaを読み込めないので、依存関係に入れます。最新バージョンはこちらから確認してください。

build.gradle
dependencies{
  implementation 'org.apache.tika:tika-parsers:1.25'
}

MIMEタイプを読み取るコード

今回はMultipartFileのインスタンスから中身をバイト配列として取り出し、そのバイト配列からMIMEタイプを判断しようと思います。以下のコードでは自作のgetMimeTypeメソッドとして定義していますが、メソッドとして定義する必要は(当然ですが)ありません。


private String getMimeType(MultipartFile multipartFile) throws IOException {
  Tika tika = new Tika();
  // getBytes()はMultipartFileのインスタンスの中身をバイト配列として取り出すというメソッド
  // getBytes()はIOExceptionを起こす可能性があるため、getMimeTypeメソッドにthrows IOExceptionを付けている
  // 以下3行は「return tika.detect(multipartFile.getBytes());」と1行で書くこともできる
  byte[] multipartFileContent = multipartFile.getBytes();
  // detect(byte[] prefix)メソッドで引数の中身からMIMEタイプを判断する
  String mimeType = tika.detect(multipartFileContent);
  return mimeType;
}

detectメソッドはバイト配列、Fileのインスタンス、文字列などいろいろなものを入れて判断することができます。その場に応じて一番入れやすいものを入れましょう。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?