Comment télécharger plusieurs fichiers vers un emplacement spécifique à l'aide de Spring MVC ? Tutoriel complet avec code Java
Publié: 2013-06-22 Ceci est un autre tutoriel Spring MVC complet qui accepte le fichier sur le formulaire de téléchargement et le copie dans un dossier spécifique lors de l'événement "Soumettre". Comme d'habitude, nous avons une dependency
sur Hello World Spring MVC Example.
Voici donc les ajouts/modifications que nous devons effectuer dans cet exemple :
- Nouveau fichier : CrunchifyFileUploadController.java
- Nouveau fichier : CrunchifyFileUpload.java
- Nouveau fichier : uploadfile.jsp
- Nouveau fichier : uploadfilesuccess.jsp
- Fichier modifié : crunchify-servlet.xml
- 2 nouveaux fichiers jar :
commons-io-2.4.jar
etcommons-fileupload-1.3.jar
Vous avez une des questions ci-dessous ? Alors vous êtes au bon endroit.
- Exemple de téléchargement de plusieurs fichiers Java
- Télécharger plusieurs fichiers ou dossiers
Voici une structure de projet finale afin que vous ayez une idée de l'endroit où ajouter des fichiers.
Commençons maintenant :
Étape-1) Pré-requis :
https://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (Déployer ce projet avec succès sur Tomcat)
Dépendances Maven :
Ajoutez ci-dessous de nouvelles dépendances au fichier pom.xml
de votre projet.
1 2 3 4 5 6 7 8 9 10 |
< dependency > < groupId > commons - fileupload < / groupId > < artifactId > commons - fileupload < / artifactId > < version > 1.2 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 1.4 < / version > < / dependency > |
Étape 2) SpringController
Créez un contrôleur basé sur Spring 3 MVC qui gère le téléchargement de fichiers. Il existe deux méthodes dans ce contrôleur :
-
crunchifyDisplayForm
- Il transmet simplement la demande à la pageuploadfile.jsp -
crunchifySave
- Récupère le formulaire à l'aide de l'annotation@ModelAttribute
et en extrait le contenu du fichier. Il crée une liste de noms de fichiers de fichiers en cours de téléchargement et transmet cette liste à la page de réussite.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
package com . crunchify . controller ; import com . crunchify . form . CrunchifyFileUpload ; import java . io . File ; import java . io . IOException ; import java . util . ArrayList ; import java . util . List ; import org . springframework . stereotype . Controller ; import org . springframework . ui . Model ; import org . springframework . web . bind . annotation . ModelAttribute ; import org . springframework . web . bind . annotation . RequestMapping ; import org . springframework . web . bind . annotation . RequestMethod ; import org . springframework . web . multipart . MultipartFile ; @Controller public class CrunchifyFileUploadController { @RequestMapping ( value = "/upload" , method = RequestMethod . GET ) public String crunchifyDisplayForm ( ) { return "uploadfile" ; } @RequestMapping ( value = "/savefiles" , method = RequestMethod . POST ) public String crunchifySave ( @ModelAttribute ( "uploadForm" ) CrunchifyFileUpload uploadForm , Model map ) throws IllegalStateException , IOException { String saveDirectory = "c:/crunchify/" ; List <MultipartFile> crunchifyFiles = uploadForm . getFiles ( ) ; List <String> fileNames = new ArrayList <String> ( ) ; if ( null ! = crunchifyFiles && crunchifyFiles.size() > 0) { for (MultipartFile multipartFile : crunchifyFiles) { String fileName = multipartFile.getOriginalFilename(); if ( ! "" . equalsIgnoreCase ( fileName ) ) { // Handle file content - multipartFile.getInputStream() multipartFile . transferTo ( new File ( saveDirectory + fileName ) ) ; fileNames . add ( fileName ) ; } } } map . addAttribute ( "files" , fileNames ) ; return "uploadfilesuccess" ; } } |
Étape-3) Modèle - Objet de formulaire
Créez un bean Java qui agit comme objet Model/Form pour notre application Spring. Ce bean contient une List
d'objets org.springframework.web.multipart.MultipartFile
. Le framework Spring fournit une classe utile MultipartFile qui peut être utilisée pour récupérer le contenu du fichier téléchargé. Outre son contenu, l'objet MultipartFile vous donne également d'autres informations utiles telles que le nom du fichier, la taille du fichier, etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package com . crunchify . form ; import java . util . List ; import org . springframework . web . multipart . MultipartFile ; public class CrunchifyFileUpload { private List <MultipartFile> crunchifyFiles ; public List <MultipartFile> getFiles ( ) { return crunchifyFiles ; } public void setFiles ( List <MultipartFile> files ) { this . crunchifyFiles = files ; } } |
Étape 4) Vues JSP
Créez maintenant les pages de vue pour cette application. Nous aurons besoin de deux JSP, un pour afficher le formulaire de téléchargement de fichier et un autre pour afficher le résultat d'un téléchargement réussi.
Le uploadfile.jsp
affiche un formulaire avec une entrée de fichier. En dehors de cela, nous avons ajouté un petit extrait jquery en cliquant sur le bouton Ajouter. Cela ajoutera un nouveau composant d'entrée de fichier à la fin du formulaire. Cela permet à l'utilisateur de télécharger autant de fichiers qu'il le souhaite.
Notez que nous avons défini enctype=”multipart/form-data”
de notre <form>
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<% @ taglib uri = "http://www.springframework.org/tags/form" prefix = "form" %> < html > < head > < title > Crunchify - Spring MVC Upload Multiple Files Example < / title > <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" > </script> <script> $ ( document ) . ready ( function ( ) { //add more file components if Add is clicked $ ( '#addFile' ) . click ( function ( ) { var fileIndex = $ ( '#fileTable tr' ) . children ( ) . length - 1 ; $ ( '#fileTable' ) . append ( '<tr><td>' + ' <input type="file" name="files[' + fileIndex + ']" />' + '</td></tr>' ) ; } ) ; } ) ; </script> <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png' ) ; } </style> < / head > < body > < br > < br > < div align = "center" > < h1 > Crunchify - Spring MVC Upload Multiple Files Example < / h1 > < form : form method = "post" action = "savefiles.html" modelAttribute = "uploadForm" enctype = "multipart/form-data" > < p > Select files to upload . Press Add button to add more file inputs . < / p > < table id = "fileTable" > < tr > < td > < input name = "files[0]" type = "file" / > < / td > < / tr > < tr > < td > < input name = "files[1]" type = "file" / > < / td > < / tr > < / table > < br / > < input type = "submit" value = "Upload" / > < input id = "addFile" type = "button" value = "Add File" / > < / form : form > < br / > < / div > < / body > < / html > |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> < html > < head > < title > Crunchify - Upload Multiple Files Example < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png' ) ; } </style> < / head > < body > < br > < br > < div align = "center" > < h1 > Crunchify - Spring MVC Upload Multiple Files Example < / h1 > < p > Awesome . . Following files are uploaded successfully . < / p > < ol > < c : forEach items = "${files}" var = "file" > - $ { file } < br > < / c : forEach > < / ol > < a href = "http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html" > < input type = "button" value = "Go Back" / > < / a > < br / > < br / > < br / > < div style = "font-family: verdana; line-height: 25px; padding: 5px 10px; border-radius: 10px; border: 1px dotted #A4A4A4; width: 50%; font-size: 12px;" > Spring MVC Upload Multiple Files Example by < a href = 'https://crunchify.com' > Crunchify < / a > . Click < a href = 'https://crunchify.com/category/java-tutorials/' > here < / a > for all Java , Spring MVC , Web Development examples . < br > < / div > < / div > < / body > < / html > |
Étape-5) Mettre à jour la configuration de Spring
Ajoutez le bean ci-dessous au fichier crunchify-servlet.xml
, juste au-dessus de la ligne <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
.
1 2 |
< bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" / > |
Étape-6) Résultat de la caisse
Démarrez Tomcat et pointez votre navigateur vers cette URL : http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html et vous devriez voir un écran similaire à celui-ci.
Après le téléchargement du fichier, vous verrez un message de réussite comme celui-ci. Vous pouvez toujours embellir votre fichier .jsp comme vous le souhaitez.
Liste de tous les exemples Spring MVC, exemples Java.