34

Web プロジェクトでは、ユーザーはファイルをアップロードしますが、サーバーで受信すると、元のファイル拡張子ではなく .tmp ファイルとして保存されます (これも私の好みの動作です)。

ただし、これは で問題を引き起こしていFiles.probeContentType()ます。ローカルでは、私の Linux 開発マシンでFiles.probeContentType()は正しく動作し、適切な MIME タイプを決定しますが、プロジェクトを本番サーバー (Amazon Beanstalk) にアップロードすると、MIME タイプが正しく決定されないようです。

javadocs を読むと、の実装Files.probeContentType()が異なるようです。本番サーバーでは、ファイル拡張子を読み取っているため、コンテンツ タイプを判断できないと思います。

Files.probeContentType()引数を受け入れ、結果の MIME タイプのFileような文字列を返す、優れた迅速な代替手段は何ですか?image/png

4

3 に答える 3

44

Apache Tikaを見てください。MIME タイプを簡単に判別できます。

 Tika tika = new Tika();
 File file = ...
 String mimeType = tika.detect(file);

最低限必要な Maven 依存関係は次のとおりです。

 <dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-core</artifactId>
    <version>1.12</version>
 </dependency>
于 2013-10-31T16:37:56.803 に答える