我試圖讓用戶上傳照片到服務器,然後查看它們。上傳按照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