【发布时间】:2016-10-28 10:37:48
【问题描述】:
我正在尝试在 Grails 3.2.1 中下载文件。我有一个名为“文件”的 org.bson.types.Binary 类型保存在 mongo-db 中。存储的文件大小以 kb 为单位,因此不需要 GridFS。
我可以使用 org.bson.types.Binary 提供的 getData() 助手访问 byte[]。使用标准 mongo-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
}
}
}
使用 Mongo 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()
})
}
}
任何建议也将不胜感激。
【问题讨论】:
-
参考这个问题:download File Attachment
标签: mongodb grails rx-java reactivex