我目前正在使用 FileUploader Javascript 实用程序将以下文件与 Play2/Scala 一起使用,以将文件上传到我的服务器:
def fileUploader = Action(parse.multipartFormData) { request =>
request.body.file("qqfile").map { picture =>
import java.io.File
val filename = picture.filename
val contentType = picture.contentType
picture.ref.moveTo(new File("/tmp",filename))
Ok(Json.toJson(Map( "success" -> "true" )))
}.getOrElse {
Ok(Json.toJson(Map( "error" -> "error occured")))
}
}
我只处理小文件(<10MB),我想使用 casbah 使用 Mongo 驱动程序将这些文件直接写入 Mongo Document 或 GridFS。我意识到我可以从磁盘读取保存的文件,但是有没有办法从内存中处理这一切,而不需要先在磁盘上缓冲文件?
此处的播放文档建议编写自定义 BodyParser ( http://www.playframework.com/documentation/2.1.0/ScalaFileUpload ),但似乎没有任何关于如何编写的文档。目前尚不清楚 Scaladocs 中的 API/实现是如何工作的。我尝试查找 MultiPartFormData 源代码以查看它是如何工作的,但我似乎无法在他们的 Git 存储库中找到它:
https://github.com/playframework/Play20/tree/master/framework/src/play/src/main/scala/play/api/mvc
我已经搜索了很多,但似乎找不到一个很好的例子。