j3d*_*j3d 5 scala file-upload multipartform-data playframework
以下代码段显示了如何将上载的文件直接保存到MongoDB:
object MyController extends Controller {
...
def saveImage = Action.async(fsBodyParser) { implicit request =>
val result = for { file <- request.body.files.head.ref
update <- {
fsService.update(
file.id,
Json.obj("metadata" -> Json.obj("category" -> "image"))
)
}
} yield update
result.map { _ =>
Created(success).withHeaders(LOCATION -> s"${localHost.baseUrl}${request.uri}")
}
}
private def fsBodyParser()(
implicit fsService: FsServiceComponent#FsService
): BodyParser[MultipartFormData[Future[MetaFile]]] = {
import BodyParsers.parse._
multipartFormData(Multipart.handleFilePart {
case Multipart.FileInfo(partName, filename, contentType) =>
fsService.iteratee(filename, contentType)
})
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码编译并正常工作到Play 2.3.x ...如果我尝试使用Play 2.4.x编译它,我总是会收到以下错误消息:
[error] /home/j3d/Projects/test/app/controllers/MyController.scala:71: not found: value handleFilePart
[error] multipartFormData(handleFilePart {
[error] ^
[error] /home/j3d/Projects/test/app/controllers/MyController:72: not found: value FileInfo
[error] case FileInfo(partName, filename, contentType) =>
[error] ^
[error] (compile:compile) Compilation failed
[error] Total time: 2 s, completed Jan 3, 2015 2:11:47 PM
Run Code Online (Sandbox Code Playgroud)
看看最新版本Multipart.scala ...... Multipart.handleFilePart是private现在,它看起来像有总比没有其他选择handleFilePartAsTemporaryFile.为什么?有解决方法吗?
| 归档时间: |
|
| 查看次数: |
728 次 |
| 最近记录: |