Я использую Apache Tika 1.18, и когда я использую один фреймворк веб-сервиса (sparkjava), код ниже работает. Тем не менее, в SpringBoot строка кода BodyContentHandler () пуста. Таким образом, мой возвращенный текст пуст.
Не уверен, что с этим, но был бы признателен за любые предложения.
Я передаю в этот код строку в кодировке Base64, а также в кодировке URLE. Таким образом, эти два декодируют как первые две строки.
Запуская этот код в отладчике в SpringBoot, содержимое переменной имеет те же значения, что и в sparkjava, но как только я попаду в BodyContentHandler (), вместо того, чтобы иметь входной текст, который есть в версии sparkjava для переменной-обработчика, Версия SpringBoot имеет "" для обработчика.
Я также проверил это поведение с Тика 1.17. Так же. Также попытался удалить параметр -1 из нового конструктора BodyContentHandler (). То же самое.
Заранее спасибо.
Строка "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();
}