Apache TIKA检测到错误的内容类型

时间:2019-01-04 14:36:59

标签: spring jax-rs apache-tika

我正在使用Spring JAX-RS将文件作为多部分表单数据上传。我有inputstream对象作为参数。将输入流复制到磁盘时,我得到了文本文件。

但是当我尝试检测此Input流的内容类型时,我将Content Type作为application / octet-stream。

我的代码是

    Tika tika = new Tika();
    String contentType = tika.detect(in);

in是我的InputStream对象,我得到的内容类型为application/octet-stream

作为测试,我还使用tika Desktop测试了相同的文件,并且得到了正确的内容类型text/plain

1 个答案:

答案 0 :(得分:0)

将文本文件检测为文本文件实际上是困难的……没有魔术字节。如果提供了文件名,则Tika依赖文件名(文件后缀)。如果您在文件上运行检测,或者您传递了文件名detect(InputStream is,String filename),或者您在Metadata对象中传递了文件名(metadata.set(Metadata.RESOURCE_NAME_KEY,fileName)),则会得到正确的结果。