如何识别文件的真实的文件类型
(2011-04-26 15:39:46)
标签:
it |
分类: IT随笔 |
java中,借助外部jar包,处理文件上传是一个非常简单的事,这里我用的是cos插件,这个插件非常简单。我们要说的是,在我们处理文件上传是我们可以知道其后缀,但我们需要清楚的是,文件后缀并不能代表真实的文件类型,如我们要上传的是图片文件,如果客户端将一个exe文件改为gif后缀的文件,它照样可以上传上去,这样不论对系统的严谨性还是从界面的美观性来讲都是一个不好的处理方式,在这里,我介绍两种处理真实文件名的插件:jmimemagic-0.1.0.jar与mime-util-2.1.3.jar,不管你改后缀名为什么,它都能识别出来。下面是其执行代码:
public String getFileRealType(File file){
Magic parser
= new Magic() ;
MagicMatch
match = null;
try
{
match =
parser.getMagicMatch(new
File("E://Upload/WebRoot/upload"+file.getName()),true);
} catch
(MagicParseException e) {
e.printStackTrace();
} catch
(MagicMatchNotFoundException e) {
e.printStackTrace();
} catch
(MagicException e) {
e.printStackTrace();
}
return
match.getMimeType();
}
public String getFileRealType2(File file){
MimeUtil.registerMimeDetector("eu.medsea.mimeutil.detector.MagicMimeMimeDetector");
Collection mimeTypes =
MimeUtil.getMimeTypes(file);
return mimeTypes.toString();
}
第一个方法利用jmimemagic获取,第二个方法是利用mime-util获取
第一个方法利用jmimemagic获取,第二个方法是利用mime-util获取