Cum să încărcați mai multe fișiere într-o locație specifică folosind Spring MVC? Tutorial complet cu cod Java
Publicat: 2013-06-22 Acesta este un alt tutorial Spring MVC complet, care acceptă fișierul din formularul de încărcare și îl copiază în folderul specific la evenimentul „Trimite”. Ca de obicei, avem o dependency
de exemplul Hello World Spring MVC.
Deci, acestea sunt completările/modificările pe care trebuie să le efectuăm în acest exemplu:
- Fișier nou: CrunchifyFileUploadController.java
- Fișier nou: CrunchifyFileUpload.java
- Fișier nou: uploadfile.jsp
- Fișier nou: uploadfilesuccess.jsp
- Fișier modificat: crunchify-servlet.xml
- 2 fișiere jar noi:
commons-io-2.4.jar
șicommons-fileupload-1.3.jar
Ai vreo întrebare de mai jos? Atunci ești la locul potrivit.
- Exemplu de încărcare a mai multor fișiere Java
- Încărcați mai multe fișiere sau foldere
Iată o structură finală a proiectului, astfel încât să vă faceți o idee despre unde să adăugați fișiere.
Acum să începem:
Pasul 1) Condiție prealabilă:
https://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (Implementează acest proiect cu succes pe Tomcat)
Dependențe Maven:
Adăugați mai jos dependențe noi în fișierul pom.xml
al proiectului dvs.
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 > |
Pasul 2) SpringController
Creați un controler bazat pe Spring 3 MVC care se ocupă de încărcarea fișierelor. Există două metode în acest controler:
-
crunchifyDisplayForm
– Pur și simplu trimite cererea către pageuploadfile.jsp -
crunchifySave
– Preia formularul folosind adnotarea@ModelAttribute
și obține conținutul fișierului din acesta. Acesta creează o listă de nume de fișiere ale fișierelor încărcate și transmite această listă la pagina de succes.
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" ; } } |
Pasul-3) Model – obiect formular
Creați un bean Java care acționează ca obiect Model/Form pentru aplicația noastră Spring. Acest bean conține o List
de obiecte org.springframework.web.multipart.MultipartFile
. Spring framework oferă o clasă utilă MultipartFile care poate fi folosită pentru a prelua conținutul fișierului încărcat. Pe lângă conținutul său, obiectul MultipartFile vă oferă și alte informații utile, cum ar fi numele fișierului, dimensiunea fișierului 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 ; } } |
Pasul-4) Vizualizări JSP
Acum creați paginile de vizualizare pentru această aplicație. Vom avea nevoie de două JSP, unul pentru a afișa formularul de încărcare a fișierului și altul pentru a afișa rezultatul încărcării cu succes.
uploadfile.jsp
afișează un formular cu introducerea fișierului. În afară de aceasta, am adăugat un mic fragment jquery la clic pe butonul Adaugă. Aceasta va adăuga o nouă componentă de introducere a fișierului la sfârșitul formularului. Acest lucru permite utilizatorului să încarce câte fișiere doresc.
Rețineți că am setat enctype=”multipart/form-data”
al etichetei noastre <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 > |
Pasul 5) Actualizați configurația Spring
Adăugați sub bean în fișierul crunchify-servlet.xml
, chiar deasupra liniei <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
.
1 2 |
< bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" / > |
Pasul-6) Rezultatul plății
Porniți Tomcat și direcționați browserul către această adresă URL: http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html și ar trebui să vedeți un ecran similar cu acesta.
După încărcarea fișierului, veți vedea un mesaj de succes ca acesta. Puteți oricând să vă înfrumusețați fișierul .jsp așa cum doriți.
Lista tuturor exemplelor Spring MVC, exemplelor Java.