当前位置: 首页 > 知识库问答 >
问题:

Apache Tika无法使用文件内容检测内容类型

解晟睿
2023-03-14

我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码:

Tika tika = new Tika();
File file = new File(filepath);
String mimeType = tika.detect(file);

Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下:

èé

通过以下方式正确检测具有相同配置和以下内容的文件:

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

我已经尝试使用Linux File命令来检测mime类型,它与预期的一样工作。我还尝试使用Apache Tika App2.1.0 GUI,但它的行为与我的代码相同。

如何使用文件的内容来检测这样的文件有什么建议吗?提前谢谢你。

共有1个答案

蒋权
2023-03-14

Tika在文件中看到这些二进制值:1110100011100101

这些二进制值可能意味着任何东西。它可以是存储在此文件中的整数或长数,即59621

这一短数量的内容给了Tika太少的值,无法进行有根据的猜测,所以它默认不识别它,因为它不确定它的类型,扩展也无助于它清理高于确定性阈值的内容。

这就是为什么较长的文件确实起作用,因为它是一个长数据分段的整数块,掩盖为文本文件的变化更小了。

当tika由于文件不足而失败时,请尝试通过shell_exec()作为备份执行系统调用,以便对文件类型做出最佳猜测。

 类似资料:
  • 我试图实现JavaServlet过滤器,它修改html响应。 我的过滤器类的方法看起来像这样: 对于每一个回复,我都试图弄清楚它是否是HTML。如果是这种情况,我会做一些修改,但我有以下问题:在请求jsf文件时,返回(也返回)。在我的浏览器开发工具中,我可以看到“Content Type”标题的值为“text/html”;charset=UTF-8',但在这种情况下,为什么返回? 有没有其他方法来

  • 我似乎无法通过google drive SDK检索文件的内容。为了重现这个问题,我使用API explorer来获取一个小文本文件的元数据: 然后我点击downloadUrl链接,我总是得到一个空响应,即一个200个带有空正文的响应。如果我从Url末尾删除“gd=true”参数,它就可以下载。在我的程序中,除了删除“gd=true”也不起作用(可能是因为程序运行在服务器上,所以我没有登录到我的帐户

  • 大约一个小时后,我无法通过下载URL属性检索文件内容。

  • 我有主要类别和子类别。 看猫。php?id=1页;(id=1为主要类别) 我还想显示子类别内容。 我的类别表: (如果sub=0,则表示这是主类别,否则为子类别) 我现在的问题是这样的,; 仅显示主类别内容,但不显示子类别内容。(cat.php?id=1) * 我想我必须再次连接类别表以获得子类别的ID。??? 当然,我需要一个新的查询。我需要得到并在同一页中列出。 我卡住了。

  • 我正在尝试构建一个php国际象棋应用程序,并将其包装在容器中。起初,我使用了旧的docker配置,但它不起作用,所以我在上面添加了一些内容(比如将config apache文件复制到容器中等等)。重点是-I copy放入只包含一行代码的容器中。但是在运行容器之后,它显示第5行有错误。当我在运行之前查看文件的内容时,它显示它只包含1行,所以我感到困惑。在回购(下面的链接)中,我有这个文件。 这是我运