我正在使用Apache Tika确定文件的MIME类型。 AutoDetectParser似乎正在消耗(导致一个0字节的文件)作为参数传递给AutoDetectParser.detect()的BufferedInputStream。但是,它仅对zip文件执行此操作。我测试过的所有其他文件类型均不受影响。
public static String determineMimeType(InputStream stream, String filename) throws ParseXmlStreamException {
AutoDetectParser parser = new AutoDetectParser();
Detector detector = parser.getDetector();
Metadata metadata = new Metadata();
TikaInputStream tikaInputStream = TikaInputStream.get(stream);
metadata.add(Metadata.RESOURCE_NAME_KEY, filename);
try {
MediaType mediaType = detector.detect(tikaInputStream, metadata);
return mediaType.toString();
} catch (IOException e) {
LOG.error("Trouble detecting MIME type", e);
throw new ParseXmlStreamException("Trouble detecting MIME type", e);
}
}
AutoDetectParser仍然可以正确检测zip文件的MIME类型,但是我需要它不要导致0字节文件。我需要修复,不知道尝试什么或在哪里看。