Carga de archivo
multipart/form-data<input type=“file”> .<s: form de acción = "testupload" enctype = "multipart/form-data"> <s: textfield name = "username [0]" etiqueta = "user-1"> </s: textfield> <s: file name = "fotos" etiqueta = "fotos"> </s: file> <s: textfield name = "username [1]" etiqueta = "user-2"> </s: <sfield> <s name " etiqueta = "fotos"> </s: archivo> <s: textfield name = "username [2]" etiqueta = "user-3"> </s: textfield> <s: file name = "fotos" etiqueta = "foto"> </s: file> <s: enviar value = "enviar"> </s: enviar> </s: form/form>
Public Class uploadAction extiende ActionSupport { @setter @getter private list <chile> fotos; @Setter@getter Lista privada <String> PhotosContentType; @Setter@getter Lista privada <String> PhotosFileName; @Setter@getter Lista privada <String> Nombre de usuario; public String testupload () lanza ioexception {system.out.println ("username:"+username); System.out.println ("Fotos:"+fotos); System.out.println ("PhotosFileName:"+PhotosFileName); System.out.println ("PhotosContentType:"+PhotosContentType); // Pase el archivo al archivo de carga en el directorio raíz del servidor // obtener servletContext ServletContext ServletContext = servletactionContext.getServletContext (); // Obtener la cadena de ruta real realPath = servletContext.getRealPath ("/upload"); System.out.println (RealPath); Archivo uploadFile = nuevo archivo (realPath); // juzga si la ruta existe si (! UploadFile.exists ()) {// crea uploadFile.mkdir (); } para (int i = 0; i <photos.size (); i ++) {uuid uuid = uuid.randomuuid (); FileUtils.copyFile (Photos.get (i), nuevo archivo (RealPath + "/" + UUID + PhotosFileName.get (i))); } return éxito; }}1. ¿Cuántos pequeños problemas deben abordarse?
1. El nombre del archivo tiene un nombre duplicado. En general, se puede generar un UUID antes del nombre del archivo como prefijo.
2. Limite el tamaño de un solo archivo
3. Restringir los tipos de archivos
4. Limite el tamaño total del archivo
2. El interceptor FileUpload se proporciona en Struts2 para establecer estos valores de atributos.
El Interceptor FileUpload tiene 3 propiedades que se pueden establecer.
Nota: Hay un límite en el tamaño total de los archivos cargados en default.properties en org.apache.struts2. Puede usar constantes para modificar este límite struts.multipart.maxsize = 2097152
<constant name = "struts.devmode" value = "true"/> <!-Cambie el tamaño del archivo total aquí-> <constant name = "struts.multipart.maxsize" valor = "2097152"/> <paquete name = "predeterminado" namespace = "/" extiense = "struts-default"> <interceptors> <InterceptorRorSpace-> "MyInterceptor" <Sterceptor " name="defaultStack"> <!-- Change the size of a single file, the Commons FileUpload component accepts uploaded files by default is 2M --> <param name="fileUpload.maximumSize">57,408</param> <!-- File type allowed to upload --> <param name="fileUpload.allowedTypes">image/pjpeg,image/gif</param> < name = "Success">/Web-Inf/Views/Succes.jsp </resultado> <resultado name = "input">/upload.jsp </resultado> </acción> </paquete>
1. ¿Mensajes de error relacionados con la carga de archivos?
1. Los mensajes de error relacionados con la carga de archivos están predefinidos en el archivo Struts-Messages.Properties.
2. Puede cargar el archivo de recursos correspondiente a la acción en el archivo o redefinir el mensaje de error en el archivo de recursos internacionales I18N_ZH_CN.Properties
struts.messages.error.file.too.large = El archivo que pasa es demasiado grande struts.messages.error.content.type.not.lubrewed = archivo tipo de archivo struts.messages.error.file.extension.not.Lowed = Error de extensión
Descarga de archivos
En algunas aplicaciones, puede ser necesario enviar dinámicamente un archivo al navegador del usuario, y la ubicación de nombre y almacenamiento del archivo son impredecibles al programar
Código de muestra
<a href = "testdownload"> descargar </a>
La clase pública DownloadAntaction extiende ActionSupport {// Por lo general, los siguientes parámetros se proporcionarán en la acción @setter @getter private string contentType; @Setter@getter Private Long ContentLength; @Setter@getter private string contentDisposition; @Setter@getter Private InputStream InputStream; public String testdownload () lanza FileNotFoundException, UnsupportedEncodingException {// get ServletContext ServletContext ServletContext = ServletActionContext.getServletContext (); // Obtenga la ruta de la cadena de archivo realPath = servletContext.getRealPath ("/web-inf/file/al menos you.mp3"); // Obtener la transmisión del archivo inputStream = new FileInputStream (RealPath); // Establecer el tipo de archivo ContentType = ServletContext.getMimetype (RealPath); // Obtener la longitud del archivo contentLength = nuevo archivo (realPath) .length (); // Establecer el nombre del archivo String FileName = "Al menos you.mp3"; FileName = new String (FileName.getBytes ("GBK"), "ISO8859-1"); contentDisposition = "adjunto; filename ="+filename; devolver el éxito; }}<
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.