我试图让用户上传照片到服务器,然后查看它们。上传按照in this guide的描述进行。下面是代码:如何使用Scala在Play!2中上传文件?
def upload = Action(parse.multipartFormData) { request =>
request.body.file("picture").map { picture =>
import java.io.File
val filename = picture.filename
val contentType = picture.contentType
picture.ref.moveTo(new File("/tmp/picture"))
Ok("File uploaded")
}.getOrElse {
Redirect(routes.Application.index).flashing(
"error" -> "Missing file"
)
}
}
这是我不清楚如何服务于上传的图片回到那个想看到他们的用户。现在我将服务器托管在我自己的机器上,因此指南中的代码片段将这些文件写入我的D:驱动器,这不是(也不应该)可以从Internet获得。据我所见,有两种选择:
将照片存储在我的项目(专用于资产的项目)中的/ public文件夹下。看到这里:http://www.playframework.org/documentation/2.0/Assets
写我自己的控制器,从我的驱动器servs图像形成自定义位置。
对于1,我不确定这是否是资产的目的。对于2,我不知道如何编写这样的控制器。
有趣。这是我的理解,然而,将文件存储到数据库中可能是不好的做法,下面这个问题:http://stackoverflow.com/questions/11416735/how-to-upload-a-file-to-the-database-使用playframework-in-scala – 2012-07-12 12:52:05
一如既往,这取决于。与Amazon S3一样,GridFS也是为这类问题而制定的。如果您将文件存储在本地文件系统中,那么当您需要第二台服务器时,您遇到很大问题。看看Assets控制器,是不是很难理解。 – 2012-07-12 12:56:51
您也可以使用NAS在服务器之间共享存储并将其安装在正确的位置。您也可以将您的文件上传到CDN并让它为您的文件提供服务。使用MongoDB仅仅用于文件存储并不是我认为的更好的选择。 – iwalktheline 2012-07-12 15:46:32