Télécharger le Numéro « Spécial 2013 »




Recherche :

Envoyez des fichiers avec Play!

Ce tutorial vient poursuivre l'article sur le framework Play! Il montre comment écrire un formulaire d'envoi de fichiers et comment restituer des fichiers aux clients.

1. Création du projet

Après avoir récupérer le framework sur le site officiel (http://www.playframework.org), créez votre projet avec la commande suivante. Les utilisateurs Windows devront utiliser Cygwin.

 

> play new Upload

 

Puis pour générer le projet Netbeans :

 

> play netbeansify Upload

 

Il est aussi possible de créer un projet Eclipse en remplaçant la commande par eclipsify.

2. Notre formulaire

Le formulaire est relativement simple. Le fichier est envoyer par la méthode POST et c'est notre contrôleur Application qui va le récupérer pour le stocker sur disque dur. Vous pourrez intégrer le code suivant dans la page index.html.

 

< form action="@{Application.upload}" enctype="multipart/form-data" method="post">< /form>

< form action="@{Application.upload}" enctype="multipart/form-data" method="post">

   

    < input id="file" checked="0" disabled="0" name="file" readonly="0" type="file" />

   

 

        < input checked="0" disabled="0" readonly="0" type="submit" value="Envoyer !" />

   

< form action="@{Application.upload}" enctype="multipart/form-data" method="post">< /form>

< /form>

3. La méthode upload

On commence par ajouter la route :

 

POST    /             Application.upload

Puis on écrit le code de notre méthode. Le framework permet la récupération direct de fichiers. Ici, nous n'avons qu'a copier le fichier et, le cas échéant, créer le dossier data si celui ci n'existe pas.

 

public static void upload(File file) {

    File to = Play.getFile("data/" + file.getName());

    try {

        Files.copy(file, to);

    } catch(RuntimeException e) {

        Play.getFile("data/").mkdir();

        Files.copy(file, to);

    }

    index();

}

 

 

4. Listons les fichiers

L'ajout de fichier est opérationnel, nous allons maintenant afficher ces fichiers dans un tableau. Nous modifions la méthode index() pour restituer la liste de fichier au sein de la page :

 

public static void index() {

    try {

        List files = Arrays.asList(Play.getFile("data").listFiles());

        render(files);

    } catch(NullPointerException e) {

        render();

    }

 }

 

Ensuite, nous intégrons le listing des fichiers à la vue. Nous afficherons quelques informations complémentaires sur les fichiers :

 

Liste des fichiers

 

#{if files == null}

Aucun fichier

#{/if}

#{if files != null}

   

              Nom              Taille              Type

#{/if}

5. Récupérer les fichiers

Nous allons ajouter la route qui permet la récupération des fichiers. Celle ci se compose simplement de la racine “/content” et de son nom.

 

GET    /content/{name}     Application.fileContent

Enfin, une première méthode de rendu simple qui permet le téléchargement du fichier :

 

public static void fileContent(String name) {

    File file = Play.getFile("data/" + name);

    renderBinary(file);

}

 

Une approche plus avancée permet de charger le fichier en tant que page. Cette méthode permet la modification des entêtes HTTP :

 

public static void fileContent(String name) {

    File file = Play.getFile("data/" + name);

    response.setHeader("content-disposition","inline");

    response.contentType = MimetypesFileTypeMap.getDefaultFileTypeMap().getContentType(file);

    throw new RenderBinary(file, null, true);

}

 

Pour finir, mettez à jour le code de la vue en ajoutant par exemple un lien sur le nom du fichier qui permettra de récupérer celui ci :

 

${file.name}

Proposer un tutoriel
Vous souhaitez partagez vos connaissances avec les membres de Programmez! Publiez vos tutoriels.

L'auteur
loic.guillois (Loïc Guillois)
Développeur de formation et adepte de la mouvance open source, il gravite autours des technologies Java et de l'environnement Linux.


De A à Z
Programmez.com - 2013 - Tous droits réservés
Développement - WEB - ASP - PHP - C++ - Delphi - Java - Magazines - Ressources - Forum - Télécharger - Video - Emploi - Campus - .Net - Tutoriels

Le présent site Web est édité par Go 02, Sarl inscrite au RCS de Paris sous le N° 411321366 et dont le siège social est au 21 rue de Fécamp 75012 Paris.
Adresse de courrier électronique :diff@programmez.com

Le directeur de la publication du site www.programmez.com est Jean-Claude Vaudecrane en qualité de gérant de la sarl GO 02

Le portail du décideur informatique en entreprise : Solutions & Logiciels