Grails Tika 插件 - 如何将文件从数据库发送到 tika 进行解析
Grails Tika Plugin - How do I send a file from a database to tika to parse
我已经使用 this example 将文件上传和下载到数据库。
那么,我如何将该文件发送到我拥有的 TikaService
并解析数据?
教程将filename
和filedata
分开保存。 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
Apache 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)
我已经使用 this example 将文件上传和下载到数据库。
那么,我如何将该文件发送到我拥有的 TikaService
并解析数据?
教程将filename
和filedata
分开保存。 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
Apache 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)