Les fonctions de téléchargement et de téléchargement de fichiers ont été utilisées dans des projets récents. Je pense que cette fonction est plus importante, donc je l'ai spécialement extraite et essayé moi-même.
Voici les étapes spécifiques pour télécharger et télécharger des fichiers dans l'environnement de configuration de SpringMVC pour votre référence. Le contenu spécifique est le suivant
1. Configuration de base:
Package et configuration Maven Import Pom.xml. En plus des dépendances de base de Springmvc, il est nécessaire d'importer Commons-io.jsr et commons-fileupload.jar utilisé lors du téléchargement de fichiers:
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <ModelVersion> 4.0.0 </ Modelversion> <ProupId> FiloAdtest </ GroupId> <ArtifActid> FiloAdtest </napshot> <packaging> war </packaging> <version> 0.0.1-snapshot </ version> WAR </ Packaging> <version> 0.0.1-SNAPSHOT WebApp </name> <url> http://maven.apache.org </url> <fuild> <inalName> FOLLOADTEST </ finalName> <Glugins> <! - La configuration suivante peut garantir que la version JRE ne changera pas chaque fois que la mise à jour forcée est, puis ma Eclipse4.4.1 et Maven3.2.5 sont des exemples. Si vous ne définissez pas cela, JRE reviendra à 1,5 chaque fois que la mise à jour forcée est forcée -> <plugin> <lefactive> Maven-Compiler-Plugin </ ArfactId> <Sibler> 2.3.2 </ Version> <Fonfituration> <source> 1.7 </Source> <Bible> 1.7 </arget> <ecoding> utf-8 </coding> <ObtClassPath> $ {java.home} /lib/rt.jar </ootClassPath> </ compilerarguments> </ configuration> </gichin> </ build> <Dependces> <Dendency> <ProupId> JUnit </proupId> <Artifactid> JUnit </ Artifactid> <version> 3.8.1 </ version> <dependency> <proupId> org.springframework </proupId> <Ertifactid> Spring-webmvc </ artifactid> <version> 4.0.6.release </de version> </Dependency> <Dedency> <ProupId> com.fasterxml.jackson.core </prôd> </ artifactid> jackson-annotingations </ artifactID>. </Dependency> <Dedency> <GroupId> com.fasterxml.jackson.core </prôdId> <Artifactid> Jackson-core </letifactid> <in version> 2.2.3 </-version> </pedency> <Dedency> <ProupId> com.fasterxml.jackson.core </proupId> <ArtifActid> jackson-Databind </ artifact> <version> 2.2.3 </ version> </ dépendance> <dependency> <proupId> Commons-fileupload </proncId> <Artifactid> Commons-fileupload </ artifactive> <version> 1.3.1 </ version> </ Dependency> <Dedency> <ProupId> Commons-io </proupId> <pridence> comons-io </ artifactive> </DENDENDENCES> </PROJET>Configuration de base de web.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "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> <escription> Charset Filter </ Description> <Filter-Name> EncodingFilter </filter-name> <filter-class> org.springframework.web.filter.characterencodingfilter </filter-Class> <Init-Param> <, description> Charset Encoding </ Description> <Am param-name> Encoding </onsam-name> <param-value> utf-8 </ param-valent> <filter-name> EncodingFilter </ Filter-Name> <Url-Pattern> / * </ url-Pattern> </ Filter-Mapping> <Serplet> <Serplet-Name> Springmvc </Servlet-Name> <Serplet-Class> org.springFramework.wevlet.Dispatcherservlet </servlet-class> <param-name> contextConfiglocation </ Param-name> <Am param-Value> ClassPath: Spring.xml </Aram-Value> </Init-Param> </ Servlet> <Serplet-Mapping> <Serplet-Name> Springmvc </Servlet-Name> <Url-Pattern> *. <Leloy-File> index.html </venke-file> <endem-file> index.htm </ bienvenue-file> <ven welcome-file> index.jsp </ bienvenue-file> <ven welcome-file> index.jsp </ bienvenue-File> <Deended-File> </ Welcome-File-list> </ web-app>
Configuration de base Spring Spring.xml:
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/contex xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xschemma/contex http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <Context: Annotation-Config /> <MVC: Annotation-Driven /> <Context: Component-Scan Base-Package = "Controllers" /> <! - Pour éviter de télécharger des fichiers en retournant à JSON lorsque IE exécute Ajax -> <propriété ID = "MappingJackSonHSO <value> text / html; charset = utf-8 </value> </sist> </ propriété> </-bean> <! - Pour activer la fonction d'annotation MVC print convertisseur -> </ list> </ propriété> </ bean> <! - Prise en charge du téléchargement de fichiers -> <bean id = "multipartreSolver"> <! - 100m -> <propriété name = "maxuploadsize" value = "104857600"> </ propriété> <propriété name = "Defencoding" value = "utf-8"> </prewet> </pans>
2. Code de téléchargement de fichiers
Pour la page simple téléchargée index.html, faites attention aux paramètres de l'entype lors de la soumission du formulaire:
<! Doctype html> <html> <éadf> <méta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8" /> </ head> <body> <form action = "./ uploadfile.do" méthode = "post" enctype = "multipart / form-data"> SELECT FILE: Fichier: Fichier: "Fichier =" Fichier = "Entrée" type = "soumi" value = "soumi" /> </ form> </body> </html>
Téléchargez le code Java d'arrière-plan correspondant. Pour des questions spécifiques, veuillez vous référer aux commentaires:
contrôleurs de package; Importer java.io.file; Importer java.io.ioException; Importer java.util.iterator; Importer javax.servlet.http.httpservletRequest; import org.apache.commons.io.fileutils; import org.springframework.http.httpheaders; import org.springframework.http.httpstatus; import org.springframework.http.mediaType; import org.springframework.http.Responseentity; import org.springframework.sterreotype.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.multupar.MultiPartFile; import org.springframework.web.multupar.MultiparthTTPServletRequest; import org.springframework.web.multupar.commons.commonsMultipartreSolver; @Controller classe publique FileController {/ ** * Fichier Upload * * @Author: Tuzongxun * @title: uploadfile * @param @param fichier * @param @param request * @param @throws ilgalstateException * @Param @throws ioException * @return vide * @Date APR 28, 2016 1:22:00 pm * @throws * / @date avr 28, 2016 1:22:00 pm * @throws * / @date avr 28, 2016 1:22:00 pm * @Requestmapping (value = "/uploadfile.do", méthode = requestMethod.post) public void uploadFile (httpservletRequest) lève illégalstateException, ioException {// @requestParam ("fichier") MultipartFile Dichier, CommonsMultipartreSolver request.getSession (). getServletContext ()); // Déterminez si la demande a le téléchargement de fichiers, c'est-à-dire si (multipartResolver.ismultupartip (request)) {// converti en multipart de la demande multiparthttpservletRequest multi-iquest = (multipartHTTPServleRequest) de la demande; // obtient tous les noms de fichiers dans la demande Iterator <string> iter = multirequest.getFileNames (); while (iter.hasnext ()) {// Get Téléchargé Fichier multipartFile f = MultiRequest.getFile (iter.next ()); if (f! = null) {// Obtenez le nom de fichier de la chaîne de fichiers actuellement téléchargée myFileName = f.getoriginalFileName (); // Si le nom n'est pas "", cela signifie que le fichier existe, sinon cela signifie que le fichier n'existe pas si (myFileName.trim ()! = "") {// Définir le Path String Path = "C: // Users // Tuzongxun123 // Desktop //" + MyFileName; Fichier localfile = nouveau fichier (chemin); F.Transferto (LocalFile); }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Après avoir sélectionné le fichier à soumettre, vous verrez que le fichier sélectionné est transmis à l'emplacement spécifié dans le code. Le rendu de la page est le suivant
3. Téléchargement de fichiers
Le téléchargement du fichier nécessite le chemin de stockage du fichier téléchargé. Ceci est juste rempli manuellement. S'il se trouve dans un projet spécifique, vous pouvez enregistrer le nom de fichier et le chemin de stockage téléchargé dans la base de données. Ensuite, ajoutez une page de la liste des fichiers pour afficher le nom de fichier et le chemin du fichier, puis cliquez pour télécharger le nom et le chemin du fichier correspondant vers l'opération d'arrière-plan lors du téléchargement.
/ ** * Téléchargement de fichiers, nom de fichier et adresse de fichier requis * * @author: tuzongxun * @title: téléchargement * @ param @ param name * @ param @ param Path * @ param @ return * @ param @ lance ioException * @returnResponseentity <Byte []> * @date avr ResponseNtity <Byte []> Télécharger (@RequestParam ("name") Nom de la chaîne, @RequestParam ("FilePath") Path String) lance ioException {file file = new File (path); En-têtes httpheaders = new httpheaders (); String filename = new String (name.getBytes ("utf-8"), "iso-8859-1"); // afin de résoudre le problème des noms chinois bruits en-têtes.setContentDispositionFormData ("attachement", nom de fichier); En-thers.setContentType (mediaType.Application_octet_stream); return new ResponseNtity <Byte []> (fileUtils.readFileToByTearray (fichier), en-têtes, httpstatus.created); } La page HTML est juste un simple remplissage du nom de fichier et du chemin du fichier, et le soumettez à l'arrière-plan à l'aide du formulaire de formulaire. Ensuite, l'arrière-plan contrôlera la réponse à la zone de sélection pour enregistrer la fenêtre contextuelle du chemin de fichier sur la page. Bien sûr, je n'ai rien fait en arrière-plan ici. Si le fichier n'existe pas, une erreur sera signalée. Vous pouvez effectuer un traitement correspondant:
Téléchargement de fichiers:
</br> </br> <Form Action = "./ DownloadFile.do" Style = "Border: 1px Solid Grey; Width: Auto;" Method = "Post"> Nom du fichier: <entrée type = "text" name = "name" /> </br> </br> Chemin de fichier: <input type = "text" name = "filepath" /> </br> </br> <input type = "soumi" value = "Confirmer Download" /> </ form>
La vue de la page est la suivante:
Si le fichier n'existe pas, l'erreur est la suivante:
Ce qui précède concerne cet article, j'espère qu'il sera utile à l'apprentissage de tout le monde.