我正在开发一个允许用户上传图像的 Web 应用程序。我关心的是文件的大小,特别是如果它们是无效格式。
我想知道在读取整个文件之前,java(或第三方库)是否有办法检查允许的文件格式(jpg、gif 和 png)。
我正在开发一个允许用户上传图像的 Web 应用程序。我关心的是文件的大小,特别是如果它们是无效格式。
我想知道在读取整个文件之前,java(或第三方库)是否有办法检查允许的文件格式(jpg、gif 和 png)。
如果您希望只支持几种类型的图像,您可以从(上传)图像开始,并在某些时候使用前几个字节来检查您是否希望继续上传。
相当多的图像格式可以通过前几个字节来识别,即幻数。如果数字匹配你当然不知道文件是否有效,但它可以用来匹配扩展名和幻数以防止真的完全不对应。
查看此页面以查看一些检查 mime 类型的 Java。请阅读文档或源代码以检查任何给定的方法是否需要整个文件,或者是否可以对前几个字节进行操作。我没有使用过那些库:)
另请查看此页面,该页面还列出了一些 java 库,以及一些检测所基于的论文。
如果您设法找到自己喜欢的东西,请不要忘记提供一些反馈!
您不需要 3rd 方库。您必须编写的代码很简单。
在您处理上传时,按扩展名过滤文件。这并不完美,但可以解决大多数情况。
但是,这意味着文件已经上传到服务器。您可以在客户端使用一些 javascript 来执行相同的操作 - 检查 file-upload 组件的值是否包含允许的文件类型 - .jpg
,.png
等。
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;
}