gpt4 book ai didi

java - 使用 Tika jar 检查 Mimetype

转载 作者:搜寻专家 更新时间:2023-11-01 03:06:00 26 4
gpt4 key购买 nike

我正在单独开发标准 Java 批处理过程。我正在尝试使用 Tika Jars 确定文件附件 mimetype。我正在使用 Tika 1.4 Jar 文件。

我的代码看起来像

Parser parser= new AutoDetectParser();
InputStream stream = new FileInputStream(fileAttachment);
int writerHandler =-1;
ContentHandler contentHandler= new BodyContentHandler(writerHandler);
Metadata metadata= new Metadata();
parser.parse(stream, contentHandler, metadata, new ParseContext());
String mimeType = metadata.get(Metadata.CONTENT_TYPE);
logger.debug("File Attachment: "+fileattachment.getName()+" MimeType is: "+mimeType);

此代码对于 office 03 和 07 文档无法正常工作。

从 eclipse 运行时,我得到了正确的 mimetypes。

我构建 jar 文件并从命令运行它给出了错误的 mimetypes。

out put from command
------------
File Attachment: Testpdf.pdf MimeType is: application/pdf
File Attachment: Testpdf.tif MimeType is: image/tiff
File Attachment: Testpdf.xlsx MimeType is: application/x-tika-ooxml
File Attachment: Testpdf.xltx MimeType is: application/x-tika-ooxml
File Attachment: Testpdf.pptx MimeType is: application/x-tika-ooxml
File Attachment: Testpdf.docx MimeType is: application/x-tika-ooxml
File Attachment: Testpdf.xls MimeType is: application/zip
File Attachment: Testpdf.doc MimeType is: application/x-tika-msoffice
File Attachment: Testpdf.dot MimeType is: application/x-tika-msoffice
File Attachment: Testpdf.ppt MimeType is: application/x-tika-msoffice
File Attachment: Testpdf.xlt MimeType is: application/vnd.ms-excel

我尝试使用 OfficePraser、OOXMLParser。它不工作。我试过 tika 0.9 jar 文件。 mimeTypes 是正确的,但如果我的任何一个文件附件是“可编辑的 pdf”,我的批处理过程就会结束(如代码中的“exit(0);”)。如果我有新的 tika jar ,它会提供错误的 mimeTypes。

请帮帮我。提前致谢。

CVSR 萨尔玛

最佳答案

首先,您使用了错误的 Apache Tika。如果你只想知道文件类型,那么你应该使用 Detection API ( javadocs ) 直接,例如:

TikaConfig tika = new TikaConfig();

Metadata metadata = new Metadata();
metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, filename);
String mimetype = tika.getDetector().detect(stream, metadata);

如果您的类路径中只有 tika-core jar,则上述检测将使用 Mime Magic 和文件名提示。这将使它获得大多数文件,特别是如果它们具有正确的扩展名,但它只会遇到错误命名的“容器格式”

容器格式是指 zip、ole2 等,其中一种文件格式可以容纳多种类型(例如 ods、xlsx、keynote 都使用 .zip,.doc 和 .xls 都使用 ole2)。如果您想在容器内部进行检测以获得更准确的结果,您还需要包含 tika-parsers-standard jar 及其依赖项。

请注意,作为 explained in the Javadocs ,您的流需要支持标记和重置才能进行检测。这样 Tika 就可以读取您的流的第一位,查看它以确定您的文件是什么,然后将流返回到它为其他用途(例如解析)做好准备的状态。大多数流都应该,但如果您的流没有,修复它的最简单方法是将其包装在 TikaInputStream 中。通过TikaInputStream.get ,它会为您解决所有问题

关于java - 使用 Tika jar 检查 Mimetype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com