我正嘗試在Grails 3.2.1中下載文件。我有一個名爲「文件」的org.bson.types.Binary類型保存在mongo-db中。存儲的文件的大小以kb爲單位,因此不需要GridFS。使用JavaRx/rx-mongodb下載grails中的文件
我可以使用org.bson.types.Binary提供的getData()輔助函數來訪問byte []。使用標準蒙戈-DB驅動程序,我可以用下面的實現: -
class DownloadController {
def stream() {
def fileDB = FileDB.get(params.id)
if(fileDB) {
response.setContentType(fileDB.contentType)
response.setHeader("Content-disposition", "filename=${fileDB.id}.wav")
response.outputStream << fileDB.file.getData()
} else {
//handle error
}
}
}
隨着蒙戈的Rx驅動程序,更具體RxJava。如何從Observer訂閱下載文件? Grails提供了一個RxController,它爲rx.render和rx.respond提供助手,但是我無法得到迴應。 TBH,我試圖讓我的頭繞過ReactiveX!這是我到目前爲止: -
class DownloadController implements RxController {
def stream() {
FileDB.get((Serializable) params.id).subscribe({ fileDB fileDB->
//How do I handle this??
response.setContentType(fileDB.contentType)
response.setHeader("Content-disposition", "filename=${fileDB.id}.wav")
response.outputStream << fileDB.file.getData()
})
}
}
任何意見也將不勝感激。
轉問這個問題:下載文件附件(http://stackoverflow.com/questions/39536317/open-pdf-file-in-new-window- from-variable-path-name-gsp-page/39542861)#39542861) –