【问题标题】:Any sample to store and retrieve image on mongodb using gridfs, scala and playframework2使用 gridfs、scala 和 playframework2 在 mongodb 上存储和检索图像的任何示例
【发布时间】:2012-10-30 09:03:18
【问题描述】:

我有模特

case class Person(
  _id: ObjectId = new ObjectId,
  empno: String,
  name: String,
  picture: String
)

我对如何处理formcontrollerview 上的图片上传有点迷茫。 感谢您对样品的帮助或指出正确的方向。

【问题讨论】:

    标签: mongodb playframework playframework-2.0 salat


    【解决方案1】:

    此答案使用 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)
    

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 2011-12-10
      • 2014-12-05
      • 2014-05-11
      • 2015-11-30
      相关资源
      最近更新 更多