2016-02-19 51 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

哦,夥計。這非常愚蠢。感謝您指出。它現在有效。 –