Comment servir les fichiers téléchargés dans Play! 2 en utilisant Scala?
Je suis en train de permettre aux utilisateurs de télécharger des photos sur le serveur, puis de les visualiser. Le téléchargement se passe comme décrit dans ce guide. Voici le code:
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"
)
}
}
Il est clair pour moi comment servir les images uploadées par les utilisateurs qui veulent les voir. Maintenant je suis à la héberge le serveur sur ma machine, de sorte que le fragment de code dans le guide écrit les fichiers de mon disque D:, ce qui n'est pas (et ne devrait pas) être disponibles à partir de l'Internet. Aussi loin que je peux voir il y a 2 options:
- Stocker les photos sous l' /dossier public dans mon projet (celui qui est dédié à des actifs). Voir ici: http://www.playframework.org/documentation/2.0/Assets
- Écrire mon propre contrôleur de servs les images des lieux personnalisés à partir de mon disque.
Pour la 1, je ne suis pas sûr si c'est le but de l'actif.
Pour la 2, je n'ai aucune idée de comment écrire un tel contrôleur.
source d'informationauteur Henry Henrinson
Vous devez vous connecter pour publier un commentaire.
2.0.3 disposent d'un Avoirs extérieurs contrôleur qui pourrait être (mal)utilisé pour cela. La rédaction d'un tel contrôleur est pas de la magie, cependant, que vous aurez prédéfinie dossier où tous les téléchargements sont enregistrés, et c'est là où vous les lisez. Dans la base de données que vous enregistrez le (unique) de nom de fichier.Une autre approche serait d'enregistrer les fichiers téléchargés dans la base de données. Nous faisons cela avec GridFS dans MongoDB. Une coutume contrôleur sert à l'utilisateur. De cette façon, vos données sont stockées en un seul endroit, ce qui rend également les sauvegardes et les restaurations plus simple.
L'exemple simple est
il est "au service des fichiers" à https://www.playframework.com/documentation/2.4.x/ScalaStream#Serving-files qui explique comment se servir des fichiers
Vous pouvez ajouter une nouvelle route comme ceci: