Wie lade ich mehrere Dateien mit Spring MVC an einen bestimmten Ort hoch? Vollständiges Tutorial mit Java-Code
Veröffentlicht: 2013-06-22 Dies ist ein weiteres vollständiges Spring MVC-Tutorial, das Dateien im Upload-Formular akzeptiert und sie beim „Submit“-Ereignis in einen bestimmten Ordner kopiert. Wie üblich haben wir eine dependency
von Hello World Spring MVC Example.
Dies sind also die Ergänzungen / Änderungen, die wir in diesem Beispiel vornehmen müssen:
- Neue Datei: CrunchifyFileUploadController.java
- Neue Datei: CrunchifyFileUpload.java
- Neue Datei: uploadfile.jsp
- Neue Datei: uploadfilesuccess.jsp
- Geänderte Datei: crunchify-servlet.xml
- 2 neue JAR-Dateien:
commons-io-2.4.jar
undcommons-fileupload-1.3.jar
Haben Sie eine der folgenden Fragen? Dann sind Sie hier genau richtig.
- Beispiel für das Hochladen mehrerer Dateien in Java
- Laden Sie mehrere Dateien oder Ordner hoch
Hier ist eine endgültige Projektstruktur, damit Sie eine Vorstellung davon bekommen, wo Sie Dateien hinzufügen können.
Jetzt fangen wir an:
Schritt-1) Voraussetzung:
https://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (Stellen Sie dieses Projekt erfolgreich auf Tomcat bereit)
Maven-Abhängigkeiten:
Fügen Sie der pom.xml
-Datei Ihres Projekts unten neue Abhängigkeiten hinzu.
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 > |
Schritt-2) SpringController
Erstellen Sie einen Spring 3 MVC-basierten Controller, der das Hochladen von Dateien verarbeitet. Es gibt zwei Methoden in diesem Controller:
-
crunchifyDisplayForm
– Es leitet die Anfrage einfach an die pageuploadfile.jsp weiter -
crunchifySave
– Ruft das Formular mit der Annotation@ModelAttribute
ab und ruft daraus den Dateiinhalt ab. Es erstellt eine Liste mit Dateinamen der hochzuladenden Dateien und leitet diese Liste an die Erfolgsseite weiter.
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" ; } } |
Schritt-3) Modell – Formularobjekt
Erstellen Sie eine Java-Bean, die als Modell-/Formularobjekt für unsere Spring-Anwendung fungiert. Diese Bean enthält eine List
von org.springframework.web.multipart.MultipartFile
Objekten. Spring Framework bietet eine nützliche Klasse MultipartFile, die verwendet werden kann, um den Dateiinhalt der hochgeladenen Datei abzurufen. Neben seinem Inhalt gibt Ihnen das MultipartFile-Objekt auch andere nützliche Informationen wie Dateiname, Dateigröße usw.
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 ; } } |
Schritt-4) JSP-Ansichten
Erstellen Sie nun die Ansichtsseiten für diese Anwendung. Wir benötigen zwei JSPs, einen zum Anzeigen des Datei-Upload-Formulars und einen zum Anzeigen des Ergebnisses bei erfolgreichem Upload.
Die uploadfile.jsp
zeigt ein Formular mit Dateieingabe an. Abgesehen davon haben wir beim Klicken auf die Schaltfläche Hinzufügen ein kleines Jquery-Snippet hinzugefügt. Dadurch wird am Ende des Formulars eine neue Dateieingabekomponente hinzugefügt. Auf diese Weise können Benutzer so viele Dateien hochladen, wie sie möchten.
Beachten Sie, dass wir das enctype=”multipart/form-data”
unseres <form>
-Tags gesetzt haben.
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 > |
Schritt-5) Aktualisieren Sie die Spring-Konfiguration
Fügen Sie die Bean unten zur Datei crunchify-servlet.xml
, direkt über der Zeile <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
.
1 2 |
< bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" / > |
Schritt-6) Checkout-Ergebnis
Starten Sie Tomcat und richten Sie Ihren Browser auf diese URL: http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html und Sie sollten einen ähnlichen Bildschirm sehen.
Nach dem Hochladen der Datei sehen Sie eine Erfolgsmeldung wie diese. Sie können Ihre .jsp-Datei jederzeit nach Belieben verschönern.
Liste aller Spring MVC-Beispiele, Java-Beispiele.