Die Datei -Upload- und Download -Funktionen wurden in jüngsten Projekten verwendet. Ich denke, diese Funktion ist wichtiger, also habe ich sie speziell extrahiert und es selbst ausprobiert.
Im Folgenden finden Sie die spezifischen Schritte zum Hochladen und Herunterladen von Dateien in der SpringMVC -Konfigurationsumgebung für Ihre Referenz. Der spezifische Inhalt ist wie folgt
1. Grundkonfiguration:
Maven -Importpaket und Konfiguration pom.xml. Zusätzlich zu den grundlegenden Abhängigkeiten von SpringMVC müssen Commons-io.jsr und Commons-fileUpload.jar beim Hochladen von Dateien verwendet werden:
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>filLoadTest</groupId> <artifactId>filLoadTest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>filLoadTest Maven WebApp </name> <URL> http://maven.apache.org </url> <build> <Dendname> filloadtest </finalName> <plugins> <! If you do not set this, jre will change back to 1.5 every time the forced update is forced --> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> <compilerArguments> <verbose /> <bootclasspath>${java.home}/lib/rt.jar</bootclasspath> </compilerArguments> </configuration> </plugin> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.6.RELEASE</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> </abhängig> </project>Grundlegende Konfiguration von web.xml:
<? xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schenalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "Version =" 2.5 "> <Filter> charset filter </Beschreibung <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <description>charset encoding</description> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <Filter-name> codierungfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <Servlet-name> SpringMVC </Servlet-name> <Servlet-Class> org.springframework <Param-name> contextconfigLocation </param-name> <param-value> classPath: Spring.xml </param-value> </init-param> </servlet> <Servlet-Mapping> <Servlet-name> SpringMvc </servlet-name> <url-pufter>*. <Welcome-File> Index.html </Welcome-File> <Welcome-File> INDEX </Welcome-File-List> </web-App>
Feder Basic Configuration Spring.xml:
<? xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springFramework.org/schema/mvc http://www.springframe.org/mvc/mvc.Spring-mvcring-mvcring-mving-mving-mving-mvring-mvcring-mving-mving-mving-mvcring-mvcring/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sschema/sscha <context:annotation-config /> <mvc:annotation-driven /> <context:component-scan base-package="controllers" /> <!-- To avoid download files from returning to JSON when IE executes AJAX --> <bean id="mappingJacksonHttpMessageConverter" > <property name="supportedMediaTypes"> <list> <wert> text/html; charSet = utf-8 </value> </list> </property> </bean> <!-So aktivieren Sie die FRIND-MVC-Annotationsfunktion, um die Zuordnung von Anforderungen und Annotationen pojos-> <bean> <Property name = "messeageConverters"> <ListSeconverter "/> <" maptingonhsonhsonhsonshtpmess "/> <" maptingonhonshonshonshonshonshonshtpMess "/> -Mapting-JacksonhonshonhsonhonshTPMessagonhtpmess"-zu vervollständigen. Konverter-> </list> </property> </bean> <!-Unterstützung Upload von Dateien-> <bean id = "multipartresolver"> <!-100m-> <Eigenschaft name = "MaxUploadSize" value = "104857600"> </property> <Eigentum name = "defaultEncoding" value = "utf-8"> </ban> </boan>
2. Datei -Upload -Code
Achten Sie für den hochgeladenen einfachen Page Index.html auf die Einstellungen des Entyps, wenn Sie das Formularformular senden:
<! DocType html> <html> <kopf> <meta http-äquiv = "content-type" content = "text/html; charset = utf-8"/> </head> <body> <Form Action = "./ UploadFile.do" methode "post" -Antype = "multipart/" file ". <input type = "sure" value = "suruging"/> </form> </body> </html>
Laden Sie den entsprechenden Hintergrund -Java -Code hoch. Für bestimmte Fragen finden Sie in den Kommentaren:
Paketcontroller; Import Java.io.file; importieren java.io.ioException; Import Java.util.iterator; importieren javax.servlet.http.httpServletRequest; import org.apache.commons.io.fileutils; import org.springframework.http.httpheaders; import org.springframework.http.httpstatus; import org.springframework.http.MediType; import org.springframework.http.Reptity; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.requestMethod; import org.springframework.web.bind.annotation.requestParam; import org.springframework.web.multipart.multipartFile; import org.springframework.web.multipart.multiparthttpServletRequest; import org.springframework.web.multipart.commons.commonsmultipartresolver; @Controller public class fileController { /** * File upload* * @author: tuzongxun * @Title: upLoadFile * @param @param file * @param @param request * @param @throws IllegalStateException * @param @throws IOException * @return void * @date Apr 28, 2016 1:22:00 PM * @throws */ @RequestMapping (value = "/uploadFile.do", method = requestMethod.post) public void uploadFile (httpServletRequest -Anfrage) wirkt IllegalStateException, ioException {// @Requestparam ("Datei") MultiPartfile, CommonsmultipArtresolvers (CommonMultiPARTRESOLVERSOLLE (@RequestParam) ("Datei"). Request.GetSession (). getServletContext ()); // Bestimmen Sie, ob die Anforderung Datei -Upload hat, dh if (multipartresolver.ismultiPart (request)) {// Um MultiPart -Anforderung multipartTttpServletRequest Multirequest = (multipartHttpServletReque) zu konvertieren; // Alle Dateinamen in der Anforderung Iterator <string> iter = multirequest.getFileNames () abrufen; while (iter.hasnext ()) {// Hochgeladene Datei multiPartFile f = Multirequest.getFile (iter.Next ()); if (f! // Wenn der Name nicht "" ist, bedeutet dies, dass die Datei vorhanden ist, ansonsten bedeutet dies, dass die Datei nicht existiert, wenn (myFileName.trim ()! Datei localFile = new Datei (Pfad); f.transferto (localFile); }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} &Nach der Auswahl der Datei werden Sie angezeigt, dass die ausgewählte Datei an den angegebenen Speicherort im Code übergeben wird. Das Seitenrendern ist wie folgt
3. Datei -Download
Der Datei -Download erfordert den Speicherpfad der heruntergeladenen Datei. Dies ist nur manuell ausgefüllt. Wenn es sich in einem bestimmten Projekt befindet, können Sie den Dateinamen und den Hochladen des Speicherpfads in der Datenbank speichern. Fügen Sie dann eine Seite der Dateiliste hinzu, um den Dateinamen und den Dateipfad anzuzeigen, und klicken Sie dann, um beim Herunterladen des entsprechenden Dateinamens und des Pfades zum Hintergrundvorgang hochzuladen.
/ ** * Datei herunterladen, Dateiname und Dateianschrift erforderlich * * @Author: tuzongxun * @title: download * @param @param name * @param @param path * @param @return "/downloadFile.do") public responseentity <byte []> download (@RequestParam ("Name") String -Name, @RequestParam ("filepath") String -Pfad) löst IOException {Datei Datei = new File (Pfad) aus; HttpHeaders headers = new httphoeders (); String Dateiname = new String (name.getBytes ("utf-8"), "ISO-8859-1"); // Um das Problem von verstümmelten chinesischen Namen zu lösen. Headers.SetContentType (mediatype.application_octet_stream); Neue Responseentity <Byte []> (FileUtils.ReadFileToBytearray (Datei), Header, httpstatus.Created) zurückgeben; } Die HTML -Seite ist nur ein einfaches Ausfüllen des Dateinamens und des Dateipfads und übermittelt sie mit dem Formularformular in den Hintergrund. Anschließend steuert der Hintergrund die Antwort auf das Auswahlfeld zum Speichern des Dateipfadpopups auf der Seite. Natürlich habe ich hier nichts im Hintergrund getan. Wenn die Datei nicht vorhanden ist, wird ein Fehler gemeldet. Sie können die entsprechende Verarbeitung durchführen:
Datei herunterladen:
</br> </br> <form action = "./ downloadFile.do" style = "border: 1px fest grau; width: auto;" method = "post"> Dateiname: <Eingabe type = "text" name = "name"/> </br> </br> Dateipfad: <Eingabe type = "text" name = "filepath"/> </br> </br> <Eingabe type = "value =" download bestätigen "/> </</Form>
Die Seitenansicht lautet wie folgt:
Wenn die Datei nicht vorhanden ist, lautet der Fehler wie folgt:
Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.