一. 判断文件类型一般可采用两种方式
1. 后缀名判断
简单易操作,但无法准确判断类型
2. 文件头信息判断
通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一样的,无法判断)
3. 使用apache.tika可轻松解决以上两种方式存在的问题
二. 使用方式
1. maven依赖
<dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>1.22</version> </dependency>
2. 具体实现
1 public static String getMimeType(String fileName, InputStream inputStream){ 2 AutoDetectParser parser = new AutoDetectParser(); 3 parser.setParsers(new HashMap<MediaType, Parser>()); 4 5 Metadata metadata = new Metadata(); 6 metadata.add(TikaMetadataKeys.RESOURCE_NAME_KEY, fileName); 7 8 try { 9 parser.parse(inputStream, new DefaultHandler(), metadata, new ParseContext()); 10 inputStream.close(); 11 } catch (TikaException | SAXException | IOException e) { 12 e.printStackTrace(); 13 } 14 15 return metadata.get(HttpHeaders.CONTENT_TYPE); 16 }
3. 常见文件类型
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 | |
video/* | 视频文件 |
image/* | 图片文件 |
text/plain | 纯文本 |
text/css | css文件 |
text/html | html文件 |
text/x-java-source | java源代码 |
text/x-csrc | c源代码 |
text/x-c++src | c++源代码 |