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

时间:2010-03-09 19:34:40

标签: java javax.imageio

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

我想知道在阅读整个文件之前,java(或第三方库)是否有办法检查允许的文件格式(jpg,gif和png)。

3 个答案:

答案 0 :(得分:3)

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

前几个字节magic number可识别相当多的图像格式。如果数字匹配,你当然不知道该文件是否有效,但它可能用于匹配扩展名和幻数,以防止实际上根本不对应。

查看this page查看一些检查mime类型的Java。请阅读文档或源以检查任何给定方法是否需要整个文件,或者可以在前几个字节上操作。我没有使用过这些库:)

另请查看this page,其中还列出了一些Java库,以及一些基于检测的论文。

如果你找到了自己喜欢的东西,不要忘记提供一些反馈!

答案 1 :(得分:0)

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

在处理上传时,请按照扩展程序过滤文件。这并不完美,但会占大多数情况。

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

答案 2 :(得分:0)

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;
}