Las funciones de carga y descarga de archivos se han utilizado en proyectos recientes. Creo que esta función es más importante, así que la extraí especialmente y la probé yo mismo.
Los siguientes son los pasos específicos para cargar y descargar archivos en el entorno de configuración SpringMVC para su referencia. El contenido específico es el siguiente
1. Configuración básica:
Maven Import Package and Configuration Pom.xml. Además de las dependencias básicas de SpringMVC, es necesario importar commons-io.jsr y commons-archivoupload.jar se usa al cargar archivos:
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. 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 </sl> <struct> <finalName> FILLOADTEST </inalname> <glugins> <!- La siguiente configuración puede garantizar que la versión JRE no cambie cada vez que la actualización forzada sea, luego mi eclipse4.4.1 y Maven3.2.5 son ejemplos. Si no establece esto, JRE volverá a cambiar a 1.5 cada vez que se forje la actualización forzada-> <glugin> <artifactID> maven-compiler-plugin </artifactid> <versión> 2.3.2 </versión> <figuration> <overeurse> 1.7 </over> <arget> 1.7 </target> <coding> utf-8 </coding> <cactilerAgumentsguments> <Serbose> <Bootclasspath> $ {java.home} /lib/rt.jar </bootclasspath> </compilerarGuments> </figuration> </plugin> </built> <pendencies> <pendency> <proupID> Junit </groupId> <artifactid> Junit </artifactid> <versever> 3.8.1 </Versión> <Cope> Test <Cope> <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> </pendency> <epardency> <uproupid> com.fasterxml.jackson.core </groupid> <artifactid> jackson-core </arfactid> <versión> 2.2.3 </version> </dependency> <pendency> <proupid> com.fasterxml.jackson.core </groupid> <artifactid> jackson-databind </artil <Versión> 2.2.3 </Versión> </pendency> <Spendency> <MoupRoMID> Commons-FileUpload </GroupId> <AtifactId> Commons-FileUpload </arfactActid> <Persion> 1.3.1 </versión> </pendency> <pendency> <MoupRonD> Commons-iO </proupId> <Atifactid> commons-io </artifactid> </pendency> </dependencias> </ject>Configuración básica de Web.xml:
<? xml versión = "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> <Scuidion> Charset Filter </scuidt> <filter-name> EncodingFilter </filter-name> <Scilia-Class> org.springframework.web.filter.CharacterIncodingFilter </filter-class> <Init-param> <Scuidion> Charset Coding </cription> <amamname> codificación </param-name> <filter-name> encodingfilter </filter-name> <url-pattern>/*</sl-pattern> </filter-mapping> <ervlet> <ervlet-name> springmvc </servlet-name> <ervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <elic-param> <Amam-name> contextConfigLocation </param-name> <amam-value> classpath: spring.xml </amam-value> </it-param> </servlet> <ervlet-mapping> <ervlet-name> springmvc </servlet-name> <url-patternpatter-patter <Belle Welcome-File> index.html </aude-file> <Welcome-file> index.htm </velcome-file> <welcome-file> index.jsp </leadde-file> <welcome-file> index.jsp </welcome-file> <calle-file> default.html </welcome-file> <beating-file> default.htm </bienvenido-file> <beleve-file.jsp </welcome-file> <velidente-file--filed </Welcome-File-List> </beb-app>
Spring Configuración básica Spring.xml:
<? xml versión = "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/context" xmlns: mvc = "http://www.springframework.org/schema xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/contextExt http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.sspringframework.org/schema/mvc/spring-mvc.xsd ">" <contexto: anotación-config /> <mvc: annotation-riven /> <context: component-scan base-package = "controladores" /> <!-para evitar descargar archivos de regresar a JSON cuando IE ejecuta ajax-> <bean id = "mappingjacksonhtttpmessageConverver"> <name de propiedad = "compatible con medios demisión"> <sist>> <List>> list> <valor> text/html; charset = utf-8 </value> </list> </property> </bean> <!-para habilitar la función de anotación de Spring MVC para completar la asignación de solicitudes y anotaciones Pojos-> <Bean> <Property Name = "MessageConverter Converter-> </list> </property> </reme> <!-Soporte de la carga de archivos-> <bean id = "multiparthresolver"> <!-100m-> <propiedad name = "maxuploadsize" valor = "104857600"> </propiedad> <properse name = "defaultinging" value = "utf-8"> </propiedad> <////</</beans> </beay n.
2. Código de carga de archivo
Para la página simple cargada index.html, preste atención a la configuración del entipo al enviar el formulario del formulario:
<! DocType html> <html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> </head> <body> <form action = "./ uploadfile.do" método = "publicar" enchype = "multipart/formart" "seleccionar archivo: <input type =" file "name" name "" n. type = "Subt" Value = "Subt"/> </form> </body> </html>
Cargue el código Java de fondo correspondiente. Para preguntas específicas, consulte los comentarios:
controladores de paquetes; import java.io.file; import java.io.ioException; import java.util.iterator; import javax.servlet.http.httpservletRequest; importar org.apache.commons.io.fileUtils; importar org.springframework.http.httpheaders; importar org.springframework.http.httpstatus; importar org.springframework.http.mediatype; importar org.springframework.http.ResponseEntity; importar org.springframework.stereotype.controller; importar org.springframework.web.bind.annotation.requestMapping; importar org.springframework.web.bind.annotation.requestmethod; importar org.springframework.web.bind.annotation.requestparam; importar org.springframework.web.multipart.multipartfile; importar org.springframework.web.multipart.multiparthttpservletRequest; importar 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", método = requestmethod.post) public void uploadFile (httpservletRequest request) lanza ilegalstateException, ioException {// @RequestParam ("archivo") File multipartfile, CommonsMultipartresolver MultipartResolver = new CommatsMoLMoLMOLMURLUR ("File"), archivo multipartil, CommonsMultipartresolver MultipartResolver = new CommatsMoLMoLMoLMOLMURLUR ("FILE"), Multipartfile, CommonsMultipartresolver request.getSession (). GetServletContext ()); // Determinar si la solicitud tiene carga de archivo, es decir, if (multipartresolver.Ismultipart (request)) {// Convertir a solicitud multipart MultipThttPservletRequest multirequest = (multipThttPservletRequest) solicitud; // Obtenga todos los nombres de archivos en el iterador de solicitud <String> itere = multirequest.getFileNames (); while (iter.hasnext ()) {// obtenga un archivo cargado multipartfile f = multirequest.getFile (iter.next ()); if (f! = null) {// Obtenga el nombre de archivo de la cadena de archivo cargada actualmente myFileName = f.getOriginalFileName (); // Si el nombre no es "", significa que el archivo existe, de lo contrario significa que el archivo no existe si (myFileName.trim ()! = "") {// Defina la ruta de carga de la ruta de la ruta = "c: // users // tuzongxun123 // escritorio //" + myFileName; Archivo localfile = nuevo archivo (ruta); F.Transferto (localfile); }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Después de seleccionar el archivo para enviar, verá que el archivo seleccionado se pasa a la ubicación especificada en el código. La representación de la página es la siguiente
3. Descarga de archivos
La descarga de archivos requiere la ruta de almacenamiento del archivo descargado. Esto se completa manualmente. Si se encuentra en un proyecto específico, puede guardar el nombre del archivo y la ruta de almacenamiento cargada en la base de datos. Luego agregue una página de la lista de archivos para mostrar el nombre del archivo y la ruta del archivo, y luego haga clic para cargar el nombre y la ruta de archivo correspondientes a la operación de fondo al descargar.
/ ** * Descarga de archivo, nombre de archivo y dirección de archivo requerida * * @author: tuzongxun * @title: descargar * @param @param name * @param @param * @param @return * @param @lanza ioexception * @returnResponseStity <byte []> * @date 28,2016 1:21:32 pm * @throws */ @requestmapping (valor (value = "/downloadfile.do") public respuesta a la inicio <byte []> download (@RequestParam ("Nombre") Nombre de cadena, @RequestParam ("FilePath") String Path) lanza IOException {archivo de archivo = nuevo archivo (path); Encabezados httpheaders = new httpheaders (); String filename = new String (name.getBytes ("UTF-8"), "ISO-8859-1"); // Para resolver el problema de los encabezados de nombres chinos. Headers.SetContentType (Mediatype.application_octet_stream); devuelve la nueva respuesta de respuesta <byte []> (fileUtils.readfiletobytearray (archivo), encabezados, httpstatus.created); } La página HTML es solo un simple relleno en el nombre del archivo y la ruta del archivo, y envíela al fondo utilizando el formulario del formulario. Luego, el fondo controlará la respuesta al cuadro de selección para guardar la ventana emergente de la ruta del archivo en la página. Por supuesto, no hice nada en el fondo aquí. Si el archivo no existe, se informará un error. Puede realizar el procesamiento correspondiente:
Descarga del archivo:
</br> </br> <form de acción = "./ downloadfile.do" style = "border: 1px sólido gris; ancho: auto;" método = "post"> nombre del archivo: <input type = "text" name = "name"/> </br> </br> ruta del archivo: <input type = "text" name = "filePath"/> </br> </br> <input type = "enviar" valor = "confirmar descargar"/> </form>
La vista de la página es la siguiente:
Si el archivo no existe, el error es el siguiente:
Lo anterior se trata de este artículo, espero que sea útil para el aprendizaje de todos.