G A*_*G A 4 scala mongodb playframework-2.1 reactivemongo
我试图使用以下代码在Play 2.1中使用reactivemongo保存附件:
def upload = Action(parse.multipartFormData) { request =>
request.body.file("carPicture").map { picture =>
val filename = picture.filename
val contentType = picture.contentType
val gridFS = new GridFS(db, "attachments")
val fileToSave = DefaultFileToSave(filename, contentType)
val futureResult: Future[ReadFile[BSONValue]] = gridFS.writeFromInputStream(fileToSave, new FileInputStream(new File(filename)))
Ok(Json.obj("e" -> 0))
}.getOrElse {
Redirect(routes.Application.index).flashing(
"error" -> "Missing file"
)
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
找不到参数readFileReader的隐含值:reactivemongo.bson.BSONDocumentReader [reactivemongo.api.gridfs.ReadFile [reactivemongo.bson.BSONValue]] [error] val futureResult:Future [ReadFile [BSONValue]] = gridFS.writeFromInputStream(fileToSave, new FileInputStream(new File(filename)))
我错过了什么?
谢谢,
GA
您很可能在范围内没有DefaultReadFileReader隐式对象,您可以通过添加导入来修复该对象:
import reactivemongo.api.gridfs.Implicits._
Run Code Online (Sandbox Code Playgroud)
以下编译对我来说很好(使用Play 2.1 reactivemongo模块,版本0.9):
package controllers
import java.io.{ File, FileInputStream }
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
import play.api._
import play.api.mvc._
import play.api.libs.json._
import reactivemongo.api._
import reactivemongo.bson._
import reactivemongo.api.gridfs._
import reactivemongo.api.gridfs.Implicits._
import play.modules.reactivemongo.MongoController
object Application extends Controller with MongoController {
def index = Action {
Ok(views.html.index("Hello, world..."))
}
def upload = Action(parse.multipartFormData) { request =>
request.body.file("carPicture").map { picture =>
val filename = picture.filename
val contentType = picture.contentType
val gridFS = new GridFS(db, "attachments")
val fileToSave = DefaultFileToSave(filename, contentType)
val futureResult: Future[ReadFile[BSONValue]] = gridFS.writeFromInputStream(fileToSave, new FileInputStream(new File(filename)))
Ok(Json.obj("e" -> 0))
}.getOrElse {
Redirect(routes.Application.index).flashing(
"error" -> "Missing file"
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |