Estoy tratando de permitir a los usuarios subir fotos al servidor y luego verlas. La carga ocurre como se describe in this guide. Aquí está el código:¿Cómo servir archivos cargados en Play! 2 usando Scala?
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"
)
}
}
Es claro para mí cómo servir las imágenes cargadas de nuevo a los usuarios que desean verlos. En este momento estoy alojando el servidor en mi propia máquina, por lo que el fragmento de código de la guía escribe los archivos en mi disco D: que no está (y no debería) disponible en Internet. Por lo que yo puedo ver que hay 2 opciones:
tienda las fotos en la carpeta/pública en mi proyecto (la que se dedica a los activos). Vea aquí: http://www.playframework.org/documentation/2.0/Assets
Escriba mi propio controlador que sirve imágenes de ubicaciones personalizadas desde mi disco.
Para 1, no estoy seguro de si ese es el objetivo de los activos. Para 2, no tengo idea de cómo escribir un controlador de este tipo.
Interesante . Sin embargo, estaba enterado de que almacenar archivos directamente en la base de datos podría ser una mala práctica, siguiendo esta pregunta: http://stackoverflow.com/questions/11416735/how-to-upload-a-file-to-the-database- using-playframework-in-scala –
Como siempre, depende. GridFS se hace explícitamente para este tipo de problema, al igual que Amazon S3. Si almacena sus archivos en el sistema de archivos local, tiene un gran problema cuando necesita un segundo servidor un día. Eche un vistazo al controlador de activos, no es tan difícil de entender. –
También puede usar un NAS para compartir el almacenamiento entre servidores y montarlo en los lugares correctos. También puede cargar sus archivos en un CDN y dejar que sirvan sus archivos. Ir con MongoDB solo para el almacenamiento de archivos no es la mejor opción, creo. – iwalktheline