26

ファイルのアップロードに使用できる Web ページがあります。
ここで、ファイルの種類 (zip、jpg、pdf など) が正しいかどうかを確認する必要があります。

リクエストに付属の mimeType を使用できますが、ユーザーを信頼していません。.jpg に名前が変更された .gif ファイルを誰もアップロードできないことを確認したいとしましょう
。この場合、私はすべきだと思いますマジックナンバーを調べます。
これは私が見つけた Java ライブラリで、「マジック ナンバーから MIME タイプを抽出する」必要があると思われます。
これは正しい解決策ですか、それとも何を提案しますか?

更新: mime-util プロジェクトを 見つけました。これは非常に優れていて最新のようです! (Java Mime Magic Library よりも優れているのではないでしょうか?)これは、 MIME タイプの抽出に役立つユーティリティ プロジェクト
のリストです。

4

3 に答える 3

24

Java Mime Magic ライブラリを試す

byte[] data = ...
MagicMatch match = Magic.getMagicMatch(data);
String mimeType = match.getMimeType();
于 2009-12-16T15:25:53.677 に答える
10

@sfussenegger によって投稿されたライブラリが最適なソリューションであると確信していますが、次のスニペットを使用して手作業で行っています。

DESCONOCIDO("desconocido", new byte[][] {}), PDF("PDF",
            new byte[][] { { 0x25, 0x50, 0x44, 0x46 } }), JPG("JPG",
            new byte[][] { { (byte) 0xff, (byte) 0xd8, (byte) 0xff,
                    (byte) 0xe0 } }), RAR("RAR", new byte[][] { { 0x52,
            0x61, 0x72, 0x21 } }), GIF("GIF", new byte[][] { { 0x47, 0x49,
            0x46, 0x38 } }), PNG("PNG", new byte[][] { { (byte) 0x89, 0x50,
            0x4e, 0x47 } }), ZIP("ZIP", new byte[][] { { 0x50, 0x4b } }), TIFF(
            "TIFF", new byte[][] { { 0x49, 0x49 }, { 0x4D, 0x4D } }), BMP(
            "BMP", new byte[][] { { 0x42, 0x4d } });

よろしく。

PD: 一番いいのは、依存関係がないことです。PD2: 正確性についての保証はありません! PD3: 「デスコノシド」は「不明」を意味します (スペイン語)

于 2009-12-16T15:33:09.980 に答える
-2

The activation framework is Sun's answer to this. And you may well have this already in the classpath of your app server

于 2009-12-16T15:31:57.077 に答える