我正在使用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();
}