首頁>Program>source

我有一个可用於上傳檔案的網頁。
現在,我需要檢查檔案型別是否正確(zip,jpg,pdf,...)。

我可以使用請求附帶的mimeType,但我不信任使用者,並且說我想確保没有人能够上傳在.jpg中重命名的.gif檔案。
我认為在這種情况下,我應该檢查魔術號碼
是我發現的Java庫,似乎可以實現我所需要的'提取 魔術數字的模仿型別"。
這是正確的解決方案還是您建議什麼?

UPDATE: 我發現了mime-util專案,它看起来非常好而且是最新的 ! (也许比Java Mime Magic庫好吗?)
這是實用程式專案的列表,可以帮助您提取mime型別< / p>

最新回復
  • 5月前
    1 #

    尝試Java Mime Magic庫

    byte[] data = ...
    MagicMatch match = Magic.getMagicMatch(data);
    String mimeType = match.getMimeType();
    

  • 5月前
    2 #

    我確定@s​​fussenegger發佈的庫是最好的解決方案,但是我手工編寫了以下代碼段,希望對您有所帮助。

    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:" desconocido"代表"未知"(西班牙語)

  • 5月前
    3 #

    啟用框架是Sun的答案.而且您可能已经在應用服務器的類路徑中拥有了它

相似問題

  • python:pandas時代三角洲
  • 正則表達式中的數學運算