動作環境
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のインスタンス、文字列などいろいろなものを入れて判断することができます。その場に応じて一番入れやすいものを入れましょう。