La especificación Servlet 3.0 httpservletRequest ha proporcionado un método para manejar las cargas de archivos, pero tales cargas deben hacerse en el servlet. Struts2 proporciona un paquete más simple.
STRUTS2 utiliza el marco de carga de archivos de archivo común de Jakarta de forma predeterminada. Por lo tanto, utilizando la función de carga de archivos de Struts2, debe agregar dos paquetes JAR, a saber, Commons-io-2.2.Jar y Commons-FileUpload-1.3.1.jar.
Struts2 Ejemplo de carga de archivo simple:
1. Página de carga de archivo
Para cargar archivos, el método del formulario debe establecerse para publicar y el enctype se establece en multipart/formulario. Una vez que el enchype se establece en multipart/formularios de forma, el navegador usará secuencias binarias para procesar los datos de formulario.
<%@ taglib prefix = "s" uri = "/struts-tags"%> <%-creado por la idea IntelliJ. Usuario: Administrador Fecha: 2018/1/16 Hora: 14:06 para cambiar esta plantilla Use archivo | Configuración | Plantillas de archivo .--%> <%@ página contentType = "text/html; charset = utf-8" lenguaje = "java"%> <html> <fead> <title> Struts2 Simple File Supiead </title> </head> <body> <s: Form Action = "File_upload" Method = "Post" Enctype = "Multipart/Multipart/Form-Data" <s: "S:" Supture ". etiqueta = "Seleccionar archivo"/> <s: enviar value = "cargar"/> </s: form> </body> </html>
2. Procese la acción de solicitud de carga
/** * Descripción: Struts2 Simple Archivo Carga * Autor: Once * Fecha: 2018/1/24 10:39 */Public Class FileAction extiende ActionSupport {// Subir archivo de archivo privado carga; // Tipo de archivo de carga Private String uploadContentType; // CARGAR Nombre del archivo Cadena privada uploadFileName; // cargar el archivo de carga permitido types; Los altos de las cadenas privadas se establecen dinámicamente en Struts.xml usando la etiqueta Param en Struts.xml; Public String Page () {return "página"; } public void upload () {// cargar: // 1. Lea el contenido del archivo // 2. Escriba el contenido del archivo en el archivo especificado Pruebe {System.out.println ("File Subload permitido type ="+IloodTypes); String realPath = servletactionContext.getServletContext (). GetRealPath ("/upload"); System.out.println ("Puta absoluta del proyecto ="+RealPath); // Crear el archivo nuevo del directorio de guardar archivo (RealPath) .MkDir (); Archivo archivo = nuevo archivo (realPath+"/"+uploadFileName); // crea if (! File.exists ()) {file.createenewfile (); } FileOutputStream out = new FileOutputStream (archivo); FileInputStream in = new FileInputStream (cargar); byte [] buffer = new Byte [1024]; int len = 0; // Escribir mientras lee y escribe 1kb cada vez que escriba 1kb while ((len = in.read (buffer))> 0) {out.write (buffer, 0, len); } System.out.println ("Carga de archivo con éxito ..."); } catch (Exception e) {E.PrintStackTrace (); }} archivo público getupload () {return upload; } public void setupload (file upload) {this.upload = upload; } public String getuploadContentType () {return uploadContentType; } public void setUploadContentType (String uploadContentType) {this.uploadContentType = uploadContentType; } public String getuploadFileName () {return uploadFileName; } public void setUploadFileName (String uploadFileName) {this.uploadFileName = uploadFileName; } public String getAllowTypes () {return tlowTypes; } public void setAlowTypes (string loodTypes) {this. allowtypes = deslointypes; }}Si el formulario contiene un campo de archivo con el atributo de nombre XXX, la acción correspondiente debe usar tres variables de miembro para encapsular la información del campo Archivo.
La variable de miembro XXX del archivo de tipo encapsula el contenido del archivo correspondiente al campo Archivo.
La variable de miembro XXXFileName de la cadena de tipo encapsula el nombre del archivo del archivo correspondiente al campo Archivo.
La variable de miembro XXXContentType de la cadena de tipo encapsula el tipo de archivo del archivo correspondiente al campo Archivo.
3. Configurar struts.xml
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Struts public "-// Apache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtdd"> <truts> <stitant nami value = "false"/> <constant name = "struts.devmode" value = "true"/> <paquete name = "default" namespace = "/" extends = "struts-default"> <!-file upload-> <Action name = "file_*" method = "{1}"> <resultado name = "página">/web-inf/jsp/fileuppload.jsp </dinutam-dynamy stithining de dynamic de la acción de la acción < propiedades. Aquí hay un ejemplo para establecer el tipo que permite cargas de archivos, pero el programa de acción no realiza mucho procesamiento -> <param name = "lettypes"> Image/png, image/gif, image/jpeg </param> </action> </paquete> </truts>Interceptor implementa el filtrado de archivos
Struts2 proporciona un interceptor para la carga de archivos, fileUpload. Para que este interceptor funcione, la referencia del interceptor debe configurarse en la acción.
Al configurar un Interceptor FileUpload, puede especificar dos parámetros para él:
ELTYPES: El tipo de archivo se permite cargar, separado por múltiples tipos de archivos con comas inglesas
MaximumSize: el tamaño del archivo se permite cargar, en bytes.
Cuando el filtrado de archivos falla, el sistema se transfiere automáticamente a la vista lógica de entrada, por lo que la vista lógica llamada entrada debe configurarse para esta acción. Además, la referencia del interceptor de defaultStack debe configurarse para esta acción como se muestra.
El archivo de configuración de struts.xml es el siguiente:
<? xml versión = "1.0" encoding = "utf-8"?> <! Doctype Struts public "-// Apache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtdd"> <truts> <stitant nami value = "false" /> <constant name = "struts.devmode" value = "true" /> <paquete name = "default" namespace = " /" extends = "struts-default"> <!-file upload-> <Action name = "file_*" método = "{1}"> <!-Configurar fileUpload interceptor y configurar antes de predeterminado interceptor stack- name = "fileUpload"> <!-Tipo de archivo permitido-> <param name = "lowTypes"> Image/png, image/gif, image/jpeg </param> <!-size de archivo permitido-> <param name = "maximumumsize"> 2000 x Página-> <resultado name = "input">/web-inf/jsp/input.jsp </resultado> <resultado name = "página">/web-inf/jsp/fileupload.jsp </resultado> </action> </paquete> </struts>El interceptor de carga de archivo configurado anteriormente requiere que el tipo de carga de archivo solo pueda ser un archivo de imagen, y el tamaño del archivo no puede ser mayor que 2000 bytes. Si el archivo cargado es demasiado grande o el tipo no coincide, saltará a la vista lógica de entrada.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.