Cargar archivos es uno de los escenarios comunes en Internet. La situación más típica es cargar avatares, etc. Hoy, lo llevaré a hacer un pequeño caso de carga de archivos en Spring Boot.
1. Configuración del paquete POM
Utilizamos la última versión 1.5.9 de Spring Boot, JDK usa 1.8, Tomcat8.0.
<Parent> <MoupRoD> org.springframework.boot </proupid> <artifactid> spring-boot-starter-parent </arfactid> <version> 1.5.9.release </verversion> </parent> <perties> <java.version> 1.8 </Java.version> </propiedades> <pendencias> <pendency> <MoupRid> org.springframework.boot </groupid> <artifactID> spring-boot-starter-web </artifactid> </pepertency> <paper> <mupoupid> org.springframework.boot </groupid> <artifactid> spring-boot-shymeleaf </artifactid> </dependency> <pendency> <MoupRid> org.springframework.boot </groupid> <artifactid> spring-boot-devlools </artifactid> <pectional> true </pectional> </pendency> </dependencias>
Spring-boot-starter-thymeleaf se introduce como el motor de plantilla de página y escribe algunos ejemplos de carga simples.
2. Configuración de clase de inicio
@SpringBootapplicationPublic Class FileUploadWebApplication {public static void main (string [] args) lanza la excepción {springApplication.run (fileUploadWebApplication.class, args); } // RESTIGUADA DE CONEXIÓN DE CARGA DE ARCHIVO GRANDE TOMCAT @Bean TomCatembedDedServletContainerFactory TomCatembedDed () {TomCatEmbedDedServletContainerFactory Tomcat = new TomCatembedDedServletContainerFactory (); Tomcat.addconnectorCustomizers ((TomCatConnectorCustomizer) Conector -> {if ((conector.getProtocolHandler () instancia de abstracthttp11protocol <?>)) {// -1 significa ilimitado ((Abstracthttp11protocol <?>)) conector.getProtocolHandler ()). setMaxSwallowsize (-1); devolver Tomcat; }}El código TomCatembedded es resolver el problema del restablecimiento de la conexión al cargar archivos de más de 10 m. Este contenido de excepción tampoco es capturado por Globalexception.
Referencia de contenido detallado: Restablecimiento de conexión de carga de archivo grande Tomcat
3. Escribe una página front-end
Página de carga
<! Doctype html> <html xmlns: th = "http://www.thymeleaf.org"> <body> <h1> Spring Boot File Supload Supead </h1> <Form Method = "Post" Action = "/upload" Incype = "multipart/formy-data"> <input type = "archivo" name = "archivo"/> <> <bread "tuting =" titing = <brin type = "Subt" Value = "Subt"/> </form> </body> </html>
Una solicitud de publicación muy simple, un cuadro de selección para seleccionar un archivo y un botón de envío, el efecto es el siguiente:
Página de visualización de resultados de carga:
<! Doctype html> <html lang = "en" xmlns: th = "http://www.thymeleaf.org"> <body> <h1> spring boot - status de carga </h1> <divs th: if = "$ {mensaje}"> <h2 th: text = "$ {mensaje}"/> <Div> </body </bodyLas representaciones son las siguientes:
4. Clase de control de carga de redacción
Visite localhost para saltar automáticamente a la página de carga:
@GetMapping ("/") public String index () {return "cargar";}Subir el procesamiento del servicio
@PostMapping ("/upload") Public String SingleFileUpload (@RequestParam ("File") File MultipartFile, redirectAtTributes redirectAtTributes) {if (file.isEmpty ()) {redirectAtTributes.AddFlashAttribute ("Mensaje", "Seleccione un archivo para subir"); return "redirect: cargarstatus"; } try {// Obtenga el archivo y guárdelo en algún lugar byte [] bytes = file.getBytes (); Ruta ruta = ratts.get (uploaded_folder + file.getOriginalFileName ()); Files.write (ruta, bytes); redirectattributes.AddFlashAttribute ("Mensaje", "Usted cargó con éxito '" + file.getOriginalFileName () + "'"); } catch (ioException e) {E.PrintStackTrace (); } return "redirect:/uploadStatus";}El código anterior significa que la información del archivo se lee a través de MultipartFile, si el archivo está vacío, salte a la página de resultados y proporcione un aviso; Si la transmisión del archivo no está vacía y escrita en el directorio especificado, el resultado se mostrará en la página.
MultipartFile es una clase de encapsulación para archivos cargados de Spring, que contiene información como transmisiones binarias y atributos de archivo. Los atributos relevantes también se pueden configurar en el archivo de configuración. La información de configuración básica es la siguiente:
spring.http.multipart.enabled = true #default se compatible con el archivo upload.spring.http.multipart.file-size-threshold = 0 #support archivo escribiendo en disk.spring.http.multipart.location = # directorio temporal para cargar archivos spring.http.multipart spring.http.multipart.max-request-size = 10mb # Tamaño máximo de solicitud compatible
Los más utilizados son los dos últimos contenidos de configuración, que limitan el tamaño de carga de archivos. Si el archivo excede el tamaño, se lanzará una excepción al cargar:
Para obtener más información de configuración, consulte aquí: Propiedades de la aplicación común
5. Manejo de excepciones
@ControllerAdVicePublic Class GlobalExceptionHandler {@ExceptionHandler (multipartException.class) public String HandleError1 (multipartException e, redirectAtTributes redirectatTributes) {redirectatTributes.AddFlashAttribute ("Mensaje", e.getCause (). GetMessage ()); return "redirect:/uploadStatus"; }}Establezca un @ControllerAdVice para monitorear si el tamaño del archivo cargado por multipart es limitado. Cuando ocurre esta excepción, se da un mensaje en la página delantera. Puede hacer muchas cosas con @ControllerAdvice, como el manejo de excepciones unificadas globales, etc. Los estudiantes interesados pueden bajar para aprender al respecto.
6. Resumen
Se completa esta simple demostración de cargar archivos usando el arranque de Spring. Los estudiantes interesados pueden descargar el código de muestra y probarlo.
referirse a:
Código de muestra - Github
Muestra de nube de código de código
Resumir
Lo anterior es lo que el editor le presentó utilizando la función de carga de archivos de arranque de Spring. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!