Apache Tika BodyContentHandler()为空

时间:2018-05-02 12:09:15

标签: apache-tika

我正在使用Apache Tika 1.18,当我使用一个Web服务框架(sparkjava)时,下面的代码可行。但在SpringBoot中,BodyContentHandler()代码行为空。因此,我返回的文本为空。

不确定这是怎么回事,但不胜感激。

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

在SpringBoot的调试器中运行此代码,变量内容具有与sparkjava中相同的值,但是一旦我到达BodyContentHandler(),而不是像sparkjava版本那样输入文本用于处理程序变量, SpringBoot版本有“”处理程序。

我还用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();
        }

0 个答案:

没有答案