检测给定的文件是否为图像并且是Java中特定类型的有效图像

use*_*535 3 java file-type image

我需要从用户输入文件中获取文件,该文件应仅为指定类型的图像。仅JPEGs。其他文件必须被拒绝。

所以我对文件实施了朴素的基本检查

fileName.toLowerCase().endsWith(".jpg") || fileName.toLowerCase().endsWith(".jpeg")
Run Code Online (Sandbox Code Playgroud)

因此,如果用户上传了file.png,则该文件将被拒绝。但是后来用户意识到,如果他们只是将file.png重命名为file.jpg,那么该文件将被上传。

是否可以仅JAVA SDK使用外部jar 来检测提供的文件是否为给定类型的有效图像?(请注意,我仍在使用JDK6)。谢谢。

Sma*_*ker 5

进行一些幼稚的检查以将JPEG与PNG分开应该相对容易。根据Wikipedia的介绍,JPEG文件始终以开头FF D8。但是,PNG似乎是以开头的89 50,因此只需从文件中读取一个或两个字节就可以轻松地区分两者。

我建议您查找最重要的图像类型的文件格式,以确保没有其他以开头的主流格式FF D8。但是,似乎不太可能。

编辑:JPEG,PNG,GIF,BMP和TIFF似乎在文件开头都具有神奇的值,以区别于其他类型。