4

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

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

4

3 回答 3

3

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

相当多的图像格式可以通过前几个字节来识别,即幻数。如果数字匹配你当然不知道文件是否有效,但它可以用来匹配扩展名和幻数以防止真的完全不对应。

查看此页面以查看一些检查 mime 类型的 Java。请阅读文档或源代码以检查任何给定的方法是否需要整个文件,或者是否可以对前几个字节进行操作。我没有使用过那些库:)

另请查看此页面,该页面还列出了一些 java 库,以及一些检测所基于的论文。

如果您设法找到自己喜欢的东西,请不要忘记提供一些反馈!

于 2010-03-09T20:27:01.793 回答
0

您不需要 3rd 方库。您必须编写的代码很简单。

在您处理上传时,按扩展名过滤文件。这并不完美,但可以解决大多数情况。

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

于 2010-03-09T19:49:50.630 回答
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;
}
于 2012-01-17T19:39:41.527 回答