HuTool之判断上传文件的文件类型
文件类型判断-FileTypeUtil
由来
在文件上传时,有时候我们需要判断文件类型。但是又不能简单的通过扩展名来判断(防止恶意脚本等通过上传到服务器上),于是我们需要在服务端通过读取文件的首部几个二进制位来判断常用的文件类型。
使用
这个工具类使用非常简单,通过调用FileTypeUtil.getType
即可判断,这个方法同时提供众多的重载方法,用于读取不同的文件和流。
File file = FileUtil.file("d:/test.jpg");
String type = FileTypeUtil.getType(file);
//输出 jpg则说明确实为jpg文件
Console.log(type);
原理和局限性
这个类是通过读取文件流中前N个byte值来判断文件类型,在类中我们通过Map形式将常用的文件类型做了映射,这些映射都是网络上搜集而来。也就是说,我们只能识别有限的几种文件类型。但是这些类型已经涵盖了常用的图片、音频、视频、Office文档类型,可以应对大部分的使用场景。
对于某些文本格式的文件我们并不能通过首部byte判断其类型,比如
JSON
,这类文件本质上是文本文件,我们应该读取其文本内容,通过其语法判断类型。