在上传文件usinnApache Tika
时,我正在尝试检测文件类型,如下所示:
static final List<String> VALID_FILE_TYPES = Arrays.asList(
// code omitted for brevity
"audio/aac"
);
public static void detectFileType(InputStream inputStream, String fileId) {
try {
ApacheTika tika = new ApacheTika();
String fileTypeFromFile = tika.detect(inputStream);
if (!VALID_FILE_TYPES.contains(fileTypeFromFile)) {
throw new IllegalFileUploadException("Illegal file type");
}
} catch (IOException ex) {
// ...
}
}
对于某些文件扩展名,例如*.acc
,Apache Tika将文件类型检测为application/octet-stream
。
因此,在这种情况下:
1。是否有一种解决方案可以正确检测某些文件类型(例如*.acc
(并获得其确切的文件类型(如audio/aac
(?
2.如果没有解决方案,我是否应该将application/octet-stream
添加到我的VALID_FILE_TYPES
中以接受audio/aac
等文件?
我也遇到了同样的问题。解决了添加另一个Tika依赖项:
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
<version>2.6.0</version>
</dependency>
请确保它与Tika Core库具有相同的版本。我还必须传递文件名以及@Gagravarr建议的