1. El principio de carga de archivos
1. Requisitos previos para la carga de archivos:
a. El método del formulario debe estar publicado
b. El enctype del formulario de formulario debe ser multipart/formulario (determina el método de solicitud posterior y el tipo de datos del cuerpo de solicitud)
do. El tipo de entrada proporcionada en el formulario es el dominio de carga de archivo de tipo de archivo.
2. Use componentes de terceros para lograr la carga de archivos
1.
Jar: Commons-FileUpload.Jar
Commons-io.jar
2. Clase o interfaz central
DiskFileItemFactory: Establezca el entorno
Public void setsizethreshold (int Sizethreshold): establezca el tamaño del búfer. El valor predeterminado es de 10 kb.
Cuando el archivo cargado excede el tamaño del búfer, el componente FileUpload cargará el archivo utilizando un archivo caché de archivo temporal
public void setRepository (java.io.file repository): establezca el directorio donde se almacenan los archivos temporales. Por defecto, el directorio de almacenamiento de archivos temporal del sistema.
ServletfileUpload: clase de carga de núcleo (función principal: analizar el contenido del cuerpo de la solicitud)
boolean isMultipartContent (httpservletrequest? solicitud): determina si el cigado del formulario del usuario es de tipo multipart/de datos de forma.
Lista de parserequest (solicitud httpservletrequest): analice el contenido en el cuerpo de la solicitud
setFilesizEmax (4*1024*1024); // Establecer el tamaño de un solo archivo cargado
upload.setsizeMax (6*1024*1024); // Establecer el tamaño total del archivo
FileItem: representa un campo de entrada en el formulario.
boolean isformfield (): ¿es un campo normal?
String getFieldName: obtenga el nombre del campo del campo normal
Cadena getString (): obtenga el valor de un campo normal
InputStream getInputStream (): Obtenga el flujo de entrada de los campos cargados
String getName (): obtenga el nombre de archivo cargado
Ejemplo: primero cree una carpeta de archivos en el directorio web-INF, es decir, todos los archivos deben cargarse aquí, que es evitar el acceso directo por parte de otros.
1. Obtenga la ruta real de los archivos
String storePath = getServletContext (). GetRealPath ("/web-Inf/archivos");
2. Establezca el medio ambiente
DiskFileItemFactory Factory = new DiskFileItemFactory (); // ¿Dónde está el caché predeterminado y el lugar de almacenamiento de archivos temporales?
3. Método de entrega de formulario
boolean isMultipart = servletFileUpload.IsmultipartContent (solicitud); if (! isMultipart) {system.out.println ("¡Método de carga incorrecto!"); devolver; }4. Clase central de carga de archivo
ServletFileUpload upload = new ServLetFileUpload (fábrica); 5. Analizar // Lista de análisis <Siltem> items = upload.parserequest (solicitud); for (fileItem items: elementos) {if (item.isformfield ()) {// campo normal, cadena de cadena enviado por formy = item.getFieldName (); // Nombre de campo de la información de formulario String FieldValue = item.getString (); // Formulario del valor de campo de campo System.out.println (fieldName+"="+FieldValue); } else // procesamiento de archivos {inputStream in = item.getInputStream (); // Nombre del archivo de carga c: /users/administrator/desktop/a.txt name de cadena = item.getName (); // Solo necesito A.txt String filename = name.substring (name.lastIndexof ("//")+1); // Construye la transmisión de salida de salida String StoreFile = StorePath+"//"+FileName; // Sube la dirección de guardado del archivo Outtream Out = New FileOutputStream (StoreFile); byte [] b = nuevo byte [1024]; int len = -1; while ((len = in.read (b))! =-1) {out.write (b, 0, len); } in.close (); // cierre el stream out.close (); }}Escribir un formulario
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerNeN ()+":"+request.getServerPort ()+pATH+"/";%; "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <base href = "<%= basepath%>"> <title> my jsp '1.jsp' inicial de inicio </title> <meta http-oquiv = "pragma" contenido = "no-cache"> <meta http-equiv = "cheaty" cheAntrol "" COAB content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "Descripción" Content = "Esta es mi página"> <!-<Link Rel = "Stylesheet" Type = "Text/csss" href = "styles.css">-> </head> <body> <form de acción = "$ {pageContext.request.contextPath}/servlet/uploadServlet2" método = "post" cigtype = "multipart/form-data"> usernernoN name = "f1"/> <br/> <input type = "file" name = "f2"/> <br/> <input type = "envit" value = "save"/> </form> </bod> </html>Escriba un servlet de envío: uploadServlet2
paquete com.liuzhen.upload; import java.io.fileOutputStream; import java.io.ioException; import java.io.inputstream; import java.io.outputstream; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httttttttttttttttttttpSet; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpServletResponse; importar org.apache.commons.fileUpload.fileitem; import org.apache.commons.fileupload.fileuploadexception; import org.apache.commons.fileupload.disk.diskFileItemFactory; import org.apache.commons.fileUpload.servlet.servletFileUpload; // Introducción Para obtener la solicitud de la clase pública de la clase PublicServlet2. ServletException, ioexception {// establece la solicitud de codificación. respuesta.setContentType ("text/html; charset = utf-8"); Pruebe {// cargue el archivo string storePath = getServletContext (). GetRealPath ("/web-Inf/files"); // Establecer el entorno diskfileitemFactory fábrica = new DiskFileItemFactory (); // Juez del método de transmisión del formulario formado enctype = multipart/form-data boolean ismultipart = servletFileUpload.IsmultipartContent (solicitud); if (! isMultipart) {System.out.println ("¡El método de carga es incorrecto!"); devolver; } ServletFileUpload upload = new ServletFileUpload (fábrica); // Lista de análisis <Siltem> elementos = upload.parserequest (solicitud); for (fileItem items: elementos) {if (item.isformfield ()) {// campo normal, cadena de cadena enviado por formy = item.getFieldName (); // Nombre de campo de la información de formulario String FieldValue = item.getString (); // Formulario del valor de campo de campo System.out.println (fieldName+"="+FieldValue); } else // procesamiento de archivos {inputStream in = item.getInputStream (); // Nombre del archivo de carga c: /users/administrator/desktop/a.txt name de cadena = item.getName (); // Solo necesito A.txt String filename = name.substring (name.lastIndexof ("//")+1); // Construye la transmisión de salida de salida String StoreFile = StorePath+"//"+FileName; // Sube la dirección de guardado del archivo Outtream Out = New FileOutputStream (StoreFile); byte [] b = nuevo byte [1024]; int len = -1; while ((len = in.read (b))! =-1) {out.write (b, 0, len); } in.close (); // cierre el stream out.close (); }}} Catch (FileUploadException e) {Throw New RuntimeException (e); }} public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) arroja servletException, ioexception {doget (solicitud, respuesta); }}El archivo cargado está en la aplicación Tomcat.
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.