La carga de imagen y la carga de archivos son esencialmente las mismas, y la imagen en sí también es un archivo. La carga de archivos es cargar imágenes en el servidor. Aunque hay muchas maneras, la implementación subyacente se trata de leer y escribir archivos.
Cosas a tener en cuenta
1. El formulario debe escribir el atributo enctype = "multipart/form-data"
2. Para garantizar que el archivo se pueda cargar correctamente, el valor del atributo de nombre del control del archivo debe ser consistente con el nombre de la variable de la capa de control que envió.
Por ejemplo, si el nombre del espacio es un archivo, entonces debe definirlo en segundo plano
archivo de archivo privado; // Nombre de control de archivo Stred private FileContentType; // Tipo de imagen Private String FileFileName; //Nombre del archivo
1. Página de JSP
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" PageEncoding = "utf-8"%> <! DocType html public "-// w3c // dtd html 4.01 transición // en" "http://www.w3.org/tr/html4/loos.dttd <html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <meta http-equiv = "pragma" content = "no-cache"/> <base target = "_ self"> <title> Cargue de archivo </title> </head> <body> <body <form Methodshod = "Action" Action "" enctype = "multipart/form-data"> <input type = "file" name = "file" value = "file"> <input type = "subt" value = "identificar"> </form> </body> </html>
1. Controlador que debe enviarse para los datos de la página
paquete com.cpsec.tang.chemical.action; import java.io.file; import java.io.ioException; import java.util.random; import javax.annotation.resource; import javax.servlet.http.htttpservletRequest; importar org.apache.commons.io.fileutils; org.apache.struts2.servletactionContext; import org.springframework.stereotype.controller; import com.cpsec.tang.chemical.biz.lunbobiz; import com.cpsec.tang.chemical.entity.image; import.opensymphony.xwork.accationsUpport; @controller ("" ") extiende ActionSupport { / ** * * / private static final long SerialVersionUid = 1l; @Resource (name = "Lunbobiz") Private Lunbobiz Lunbobiz; imagen de imagen privada; archivo de archivo privado; // Nombre de control de archivo Stred private FileContentType; // Tipo de imagen Private String FileFileName; // Nombre de archivo Número de entero privado; public String findImage () {image = lunBobiz.FindImage (); devolver el éxito; } public String alteriMage () {image = lunBobiz.FindImage (); devolver el éxito; } public String alteriMage1 () {httpservletRequest request = servletactionContext.getRequest (); String root = request.getRealPath ("/upload"); // La ruta del servidor a la que se va a cargar los nombres de cadenas [] = fileFileName.split ("//."); Cadena filename = ""; if (names.length> = 1) {FileName = getRandomString (20)+"."+Names [names.length-1]; } String picpath = "upload/"+filename; // ruta de la imagen guardada en el archivo de archivo de la base de datos1 = nuevo archivo (root); intente {fileUtils.copyFile (archivo, nuevo archivo (archivo1, nombre de archivo)); }} catch (ioException e) {E.PrintStackTrace (); } return éxito; } /*Obtenga una cadena aleatoria* /public String getRandomString (int longitud) {// La longitud indica la longitud de la cadena de cadena generada base = "abcdefghijklmnopqrstuvwxyz0123456789"; Aleatorio aleatorio = new Random (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <longitud; i ++) {int number = random.nextint (base.length ()); sb.append (base.charat (número)); } return sb.ToString (); }}Esto es para cargar archivos copiando, y hay otras formas
Método 2
@Controller ("ContractAction") Public Class ContractAction extiende ActionSupport {private final static string uploadDir = "/files"; // La ruta para cargar el archivo, crear un archivo privado en WebContent; // El nombre del control de entrada debe ser archivo // cargar el nombre de archivo colección privada cadena fileFileName; // CARGAR COMENTO DEL ARCHIVO TIPO DE COMLECCIÓN PRIVADA FILECONTENTTYPE; nombre de archivo de cadena privada; public String upload () lanza FileNotFoundException, ioException {String Path = uploadFile (); // La ruta a la base de datos Guardar el éxito de la base de datos; } // Ejecutar la función de carga @SupplesSWarnings ("Deprecation") public String uploadFile () lanza FileNotFoundException, ioException {try {inputStream in = new FileInputStream (archivo); Cadena dir = servletactionContext.getRequest (). GetRealPath (uploadDir); Archivo fileLocation = nuevo archivo (Dir); // También puede crear manualmente el directorio de carga de destino en el directorio raíz de la aplicación if (! FileLocatation.exists ()) {boolean isCreated = fileLocation.mkdir (); if (! isCreated) {// creado no pudo crear el directorio de carga de destino, se puede hacer otro procesamiento, como lanzar una excepción personalizada, etc. Esta situación no generalmente debería ocurrir. regresar nulo; }} // this.setFileFileName (getRandomString (20)); Cadena [] name = this.getFileFileName (). Split ("//."); Cadena filename = getRandomString (20)+"."+Name [name.length-1]; this.setFileFileName (nombre de archivo); System.out.println (nombre de archivo); Archivo uploadFile = nuevo archivo (dir, nombre de archivo); OutputStream out = new FileOutputStream (uploadFile); byte [] buffer = new Byte [1024 * 1024]; int longitud; while ((longitud = in.read (buffer))> 0) {out.write (buffer, 0, longitud); } in.close (); out.close (); return uploadDir.substring (1)+"//"+fileFileName; } Catch (FileNotFoundException ex) {return null; } catch (ioException ex) {return null; }} public static string getRandomString (int longitud) {String str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; Aleatorio aleatorio = new Random (); StringBuffer sb = new StringBuffer (); for (int i = 0; i <longitud; i ++) {int number = random.nextint (62); sb.append (str.charat (número)); } return sb.ToString (); }} Además de la carga de imagen única, hay múltiples cargas de imagen, y los principios son los mismos
paquete com.cpsec.tang.chemical.action; import java.io.file; import java.io.fileInputStream; import java.io.filenotfoundException; import java.io.fileOutputStream; import java.io.ioException; import java.io.inputstream; import java.io.outputstream; import java.util.list; import javax.servlet.http.httpservletRequest; import org.apache.struts2.servletactionContext; import com.opensymphony.xwork2.ActionsUpport;/*** Multi-File SuboLoad*/Public Class Files Aadaction Extends ActionsUpport {// Upload Storage Rath Storage Sting Sting Stiead StieLOGTOAD "/subir"; // Cargar la recopilación de archivos Lista privada <archivo> archivo; // Cargar la recopilación de nombre del archivo Lista privada <String> fileFileName; // CARGAR COMENTO DEL ARCHIVO Tipo de recopilación Lista privada <String> fileContentType; Lista pública <Schase> getFile () {archivo return; } public void setFile (list <chile> file) {this.file = file; } Lista pública <String> getFileFileName () {return FileFileName; } public void setFileFileName (List <String> fileFileName) {this.fileFileName = fileFileName; } Lista pública <String> getFileContentType () {return fileContentType; } public void setFileContentType (list <string> fileContentType) {this.fileContentType = fileContentType; } public String uploadform () lanza la excepción {httpservletRequest request = servletactionContext.getRequest (); String webPath = null; // cargar ruta para (int i = 0; i <file.size (); i ++) {// bucle cargue cada archivo uploadFile (i); webpath = "cargar/"+this.getFileFileName (). get (i); } return "éxito"; } // Ejecutar la función de carga privada String uploadFile (int i) lanza FileNotFoundException, ioException {try {inputStream in = new FileInputStream (file.get (i)); Cadena dir = servletactionContext.getRequest (). GetRealPath (uploadDir); Archivo fileLocation = nuevo archivo (Dir); // Aquí también puede crear manualmente el directorio de carga de destino en el directorio raíz de la aplicación if (! FileLocation.exists ()) {boolean isCreated = fileLocation.mkdir (); if (! isCreated) {// Si se crea el directorio de carga de destino, se puede hacer otro procesamiento, como lanzar una excepción personalizada, etc. Esta situación no debe ocurrir. regresar nulo; }} Cadena filename = this.getFileFileName (). Get (i); Archivo uploadFile = nuevo archivo (dir, nombre de archivo); OutputStream out = new FileOutputStream (uploadFile); byte [] buffer = new Byte [1024 * 1024]; int longitud; while ((longitud = in.read (buffer))> 0) {out.write (buffer, 0, longitud); } in.close (); out.close (); return uploadFile.ToString (); } Catch (FileNotFoundException ex) {return null; } catch (ioException ex) {return null; }}}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.