1.在每一个项目中,上传文件都是必不可少的功能。都需要限制上传的文件格式,那么如何精准的判断文件格式呢,通过文件名后缀来判断文件格式感觉也不是太靠谱,这里使用了apache-tika框架,
步骤1:先引入依赖
<dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>1.9</version> </dependency>
步骤2:引入工具类
import lombok.extern.slf4j.Slf4j;
import org.apache.tika.Tika;
import java.io.IOException;
import java.io.InputStream;
/**
* @Description 文件工具类
* MimeType 文件类型
* application/msword word(.doc)
* application/vnd.ms-powerpoint powerpoint(.ppt)
* application/vnd.ms-excel excel(.xls)
* application/vnd.openxmlformats-officedocument.wordprocessingml.document word(.docx)
* application/vnd.openxmlformats-officedocument.presentationml.presentation powerpoint(.pptx)
* application/vnd.openxmlformats-officedocument.spreadsheetml.sheet excel(.xlsx)
* application/x-rar-compressed rar
* application/zip zip
* application/pdf pdf
* video/* 视频文件
* image/* 图片文件
* text/plain 纯文本
* text/css css文件
* text/html html文件
* text/x-java-source java源代码
* text/x-csrc c源代码
* text/x-c++src c++源代码
* @Date 2020/7/17 14:21
* @Author dengxiaoyu
*/
@Slf4j
public class FileUtil {
public static String getMimeType(InputStream inputStream) {
Tika tika = new Tika();
String detect = "";
try {
detect = tika.detect(inputStream);
} catch (IOException e) {
log.error("获取文件类型异常", e);
}
return detect;
}
}
步骤3:调用MultipartFile对象的getInputStream()方法获取inputstream,再调用FileUtil的getMimeType方法。