Grails Tika 插件 - 如何将文件从数据库发送到 tika 进行解析

Grails Tika Plugin - How do I send a file from a database to tika to parse

我已经使用 this example 将文件上传和下载到数据库。 那么,我如何将该文件发送到我拥有的 TikaService 并解析数据?

教程将filenamefiledata分开保存。 filedata 是二进制数据。

我可以很好地解析 app 文件夹中的文件,但我需要从数据库中获取文件。

或者,我可以在不将文件保存到数据库的情况下解析文件吗?

提前致谢。

编辑 - 错误

ERROR errors.GrailsExceptionResolver  - MissingPropertyException occurred when processing request: [GET] /myApp/document/parse/8
No such property: inputstream for class: com.myApp.DocumentController. Stacktrace follows:
Message: No such property: inputstream for class: com.myApp.DocumentController

A​​pache Tika parse() 方法使用 InputStream as input. Since the filedata is a byte array, you can use a ByteArrayInputStream 将文件数据从您的域 class 提供给 Apache Tika。

def doc = Document.read(/*some id*/)
def inputStream = new ByteArrayInputStream(doc.filedata)
def parser = /* Your Apache Tika parser */
def handler = /* An implementation of org.xml.sax.ContentHandler */
def metadata = new org.apache.tika.metadata.Metadata()

parser.parse(inputStream, handler, metadata)