代码之家  ›  专栏  ›  技术社区  ›  Dani Cricco

在读取整个文件之前,Java/IMAIIO验证格式?

  •  4
  • Dani Cricco  · 技术社区  · 16 年前

    我正在开发一个可以让用户上传图片的web应用程序。 我关心的是文件的大小,特别是如果它们是无效的格式。

    我想知道在读取整个文件之前,是否有Java(或第三方库)的方法来检查允许的文件格式(JPG、GIF和PNG)。

    3 回复  |  直到 13 年前
        1
  •  3
  •   extraneon    16 年前

    如果你只想支持几种类型的图片,你可以从加载图片开始,并在某个时候使用前几个字节来检查你是否想继续上传。

    很多图像格式都可以通过前几个字节来识别, magic number . 如果这个数字匹配,你当然不知道这个文件是否有效,但它可能被用来匹配扩展名和魔法数字,以防止真的是完全不对应。

    看一看 this page 检查一些检查MIME类型的Java。一定要读取文档或源文件,以检查是否有任何给定的方法需要整个文件,或者可以对前几个字节进行操作。我没用过那些图书馆:)

    也可以退房 this page 它还列出了一些Java库,以及一些基于检测的论文。

    如果你能找到你喜欢的东西,别忘了写一些反馈!

        2
  •  0
  •   Bozho    16 年前

    您不需要第三方库。你要写的代码很简单。

    在处理上载时,请按文件的扩展名筛选文件。这不是完美的,但将占大多数案件。

    但是,这意味着文件已经上载到服务器。您可以在客户端使用一点javascript来执行相同的操作-检查文件上载组件的值是否包含允许的文件类型- .jpg , .png 等。

        3
  •  0
  •   shanethehat    14 年前
    function extensionsOkay(fval) {
        var extension = new Array();
    
        extension[0] = ".png";
        extension[1] = ".gif";
        extension[2] = ".jpg";
        extension[3] = ".jpeg";
        extension[4] = ".bmp";
    
        // No other customization needed.
        var thisext = fval.substr(fval.lastIndexOf('.')).toLowerCase();
        for(var i = 0; i < extension.length; i++) {
            if(thisext == extension[i]) { 
                $('#support-documents').hide();
                return true; }
        }
    
        // show client side error message
        $('#span.failed').show();
        return false;
    }