此答案使用 GridFS,但是您可以使用方法中的文件执行您想要的操作upload
。
表单视图:
@helper.form(routes.Application.upload, 'enctype -> "multipart/form-data") {
@helper.inputFile(form("photo"))
<button type="submit">upload</button>
}
显示视图:
<img src='@routes.Application.getPhoto(fileId)'/>
控制器:
def upload = Action(parse.multipartFormData) { request =>
request.body.file("photo") match {
case Some(photo) =>
val gridFs = salat.gridFS("photos")
val uploadedFile = gridFs.createFile(photo.ref.file)
uploadedFile.contentType = photo.contentType.orNull
uploadedFile.save()
Ok(...)
case None => BadRequest("no photo")
}
}
def getPhoto(file: ObjectId) = Action {
import com.mongodb.casbah.Implicits._
val gridFs = salat.gridFS("photos")
gridFs.findOne(Map("_id" -> file)) match {
case Some(f) => SimpleResult(
ResponseHeader(OK, Map(
CONTENT_LENGTH -> f.length.toString,
CONTENT_TYPE -> f.contentType.getOrElse(BINARY),
DATE -> new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'", java.util.Locale.US).format(f.uploadDate)
)),
Enumerator.fromStream(f.inputStream)
)
case None => NotFound
}
}
路线:
GET /upload controllers.Application.upload
GET /photos/:file controllers.Application.getPhoto(file: ObjectId)