2016-02-19 47 views
0

我已经使用this example上传和下载文件到数据库。 然后,我怎样才能将该文件发送到TikaService我有解析数据?Grails Tika插件 - 如何将文件从数据库发送到tika以解析

本教程分别保存filenamefiledatafiledata是二进制数据。

我可以解析应用程序文件夹内的文件,但我需要从数据库中取出文件。

或者,我可以解析文件而不保存到数据库吗?

在此先感谢。

EDIT - 错误

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 

回答

2

阿帕奇提卡parse()方法使用InputStream作为输入。由于filedatabyte阵列,因此可以使用ByteArrayInputStream将域类中的文件数据提供给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) 
+0

谢谢您的回复。我很抱歉迟迟没有回来。我试过了,我收到了一些“丢失的财产错误”你可以看看我的编辑? –

+1

你有一个错字。确保'inputStream'变量拼写一致。 –

+0

哦,伙计。这非常愚蠢。感谢您指出。它现在有效。 –