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