Apache tika Apache Tika BodyContentHandler()为空

Apache tika Apache Tika BodyContentHandler()为空,apache-tika,Apache Tika,我使用的是ApacheTika1.18,当我使用一个web服务框架(sparkjava)时,下面的代码可以正常工作。但是在SpringBoot中,BodyContentHandler()代码行是空的。因此,我返回的文本是空的 不知道这是怎么回事,但如果有任何建议,我将不胜感激 我将一个Base64编码的字符串传递给这个代码,它也是URLEncoded的。因此,这两行作为前两行进行解码 在SpringBoot中的调试器中运行此代码时,变量内容的值与sparkjava中的值相同,但一旦我转到Body

我使用的是ApacheTika1.18,当我使用一个web服务框架(sparkjava)时,下面的代码可以正常工作。但是在SpringBoot中,BodyContentHandler()代码行是空的。因此,我返回的文本是空的

不知道这是怎么回事,但如果有任何建议,我将不胜感激

我将一个Base64编码的字符串传递给这个代码,它也是URLEncoded的。因此,这两行作为前两行进行解码

在SpringBoot中的调试器中运行此代码时,变量内容的值与sparkjava中的值相同,但一旦我转到BodyContentHandler(),SpringBoot版本的处理程序变量的输入文本就不是sparkjava版本的输入文本,而是“”的处理程序

我还用Tika 1.17测试了这种行为。一样。还尝试从新的BodyContentHandler()构造函数中删除-1参数。一样

提前谢谢


字符串“data=”传递到SpringBoot POST方法中

String bodyData = URLDecoder.decode(data.substring(data.indexOf("data=") + 5));
        byte[] decodedBodyData = java.util.Base64.getMimeDecoder().decode(bodyData);

        Tika tika = new Tika();

        try
        {
            Parser parser = new AutoDetectParser();

            // line of code below returns "". Problem!
            BodyContentHandler handler = new BodyContentHandler(-1); // handle larger files.

            Metadata metadata = new Metadata();
            InputStream inputStream = new ByteArrayInputStream(decodedBodyData);
            ParseContext context = new ParseContext();

            //parsing the file
            parser.parse(inputStream, handler, metadata, context);
            textToReturn = handler.toString();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (SAXException e)
        {
            e.printStackTrace();
        }
        catch (TikaException e)
        {
            e.printStackTrace();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }

您可能缺少解析器类。如果您尝试遵循ApacheTika故障排除指南,会发生什么情况?天才!非常感谢。奇怪,但是在sparkjavapom.xml中,我没有引用解析器,它在那里工作。相同的tika核心依赖项。现在,我的war文件预期为100 MB!再次感谢。:)