Este artículo utiliza ejemplos para introducir cómo usar Commons-FileUpload.jar. Apache's Commons-FileUpload.jar para facilitar la función de carga de los archivos. El contenido específico es el siguiente
Coloque Commons-FileUpload.jar de Apache en Web-INF/LIB en la aplicación y está listo para usar. El siguiente ejemplo muestra cómo usar su función de carga de archivo.
La versión FileUpload utilizada es 1.2 y el entorno es Eclipse3.3+MyEClipse6.0. FileUpload se basa en Commons IO, por lo que antes de ingresar al proyecto, determine el paquete JAR de Commons IO (usando Commons-IO-1.3.2.Jar en este artículo) en Web-INF/LIB.
Este artículo es un proyecto de ejemplo que se puede descargar en el archivo adjunto al final del artículo.
Ejemplo 1
El ejemplo más simple es analizar la solicitud a través de la clase ServletFileUpload Static. La clase Factory FileItemFactory procesará todos los campos en forma de la clase Mulipart, no solo los campos de archivo. getName () obtiene el nombre del archivo, getTring () obtiene el contenido de datos del formulario e isFormfield () puede determinar si es un elemento de formulario ordinario.
demo1.html
<html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> archivo de archivo </title> </head> <body> // debe ser datos de formulario multipart. <form de nombre = "myForm" action = "demo1.jsp" métode = "post" enctype = "multipart/form-data"> su nombre: <br> <input type = "text" name = "name" size = "15"> <br> archivo: <br> <input type = "file" name = "myfile"> <br> <br> <input type = "Subt" Subt = "Subt" Valor "Valor" "Valor" </form> </body> </html>
demo1.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = gb18030" pageEncoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload.*"%> <%@ page import = "org.apache.commons.fileupload.servlet .servlet. import = "org.apache.commons.fileupload.disk.*"%> <%@ page import = "java.util.*"%> <! Doctype html html "--/ w3c // dtd html 4.01 transitional // en"> <%boolean ismultipart = servletfileUplaad.ismism La solicitud de entrada son datos de formulario multipart. if (isMultipart == true) {fileItemFactory factory = new DiskFileItemFactory (); // Cree un objeto DiskFileItemFactory para la solicitud y analice la solicitud a través de ella. Después de ejecutar el análisis, todos los elementos del formulario se guardan en una lista. ServletFileUpload upload = new ServLetFileUpload (fábrica); Lista <StilEitem> elementos = upload.parserequest (request); Iterator <FileItem> ITR = items.iterator (); while (itr.hasnext ()) {fileItem item = (fileItem) itr.next (); // Verifique si el proyecto actual es un proyecto de formulario normal o un archivo de carga. if (item.isformfield ()) {// Si es un elemento de formulario normal, muestre el contenido de formulario. Cadena fieldName = item.getFieldName (); if (fieldName.equals ("name")) // respuesta a type = "text" name = "name" out.print ("El nombre de campo es" + item.getString ()); // Mostrar contenido de formulario. out.print ("<br>"); } else {// Si está cargando un archivo, muestre el nombre del archivo. out.print ("El nombre del archivo de carga es" + item.getName ()); out.print ("<br>"); }}} else {out.print ("el enctype debe ser multipart/formy-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = GB18030"> <title> File Subload </title> </head> <body> </body> </html> resultado:
el nombre de campo es Jeff
El nombre del archivo de carga ISD:/C Language Prueba Prueba/preguntas de tarea. Rar
Ejemplo 2
Cargue dos archivos al directorio especificado.
demo2.html
<html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> archivo carga </title> </head> <body> <forma name = "myForm" action = "demo2.jsp" método = "post" enchype = "multipart/formato"> archivador: <inying> name = "myFile"> <br> file2: <br> <input type = "file" name = "myfile"> <br> <br> <input type = "enviar" name = "enviar" valor "valor =" comandar "> </form> </body> </html>
demo2.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = gb18030" pageEncoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload.*"%> <%@ page import = "org.apache.commons.fileupload.servlet .servlet. import = "org.apache.commons.fileUpload.disk.*"%> <%@ page import = "java.util.*"%> <%@ page import = "java.io.*"%> <! DocType Html public "-// w3c // dtd html 4.01 transición // en"> <%string upc. upc. upc. upc. upcath "d:" d:/"dtd html 4.01 transitional // en"> <%string upc. upc. upc. upc. d: "d:/" dt:/"dtpath"; boolean isMultipart = servletFileUpload.IsmultipartContent (solicitud); if (isMultipart == true) {try {fileItemFactory factory = new DiskFileItemFactory (); ServletFileUpload upload = new ServLetFileUpload (fábrica); List <FilleItem> Elementos = upload.parserequest (request); // Obtenga todos los archivos Iterator <FileItem> ITR = items.iterator (); while (itr.hasnext ()) {// capacitar a cada archivo elemento = (fileitem) itr.next (); Cadena filename = item.getName (); // Obtenga el nombre del archivo, incluida la ruta if (filename! = Null) {file fullFile = new File (item.getName ()); Archivo savedfile = nuevo archivo (uploadPath, fullfile.getName ()); item.write (SavedFile); }} OUT.print ("Subir éxito"); } catch (Exception e) {E.PrintStackTrace (); }} else {out.println ("El enctype debe ser multipart/formy-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = GB18030"> <title> File Subload </title> </head> <body> </body> </html> resultado:
Subir éxito
En este momento, puede ver los dos archivos que cargó en "D:/Temp".
Ejemplo 3
Cargue un archivo al directorio especificado y limite el tamaño del archivo.
demo3.html
<html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> archivo de archivo </title> </head> <body> <forma name = "myform" action = "demo3.jsp" método = "post" enctype = "multipart/formato-data"> archivo: <bebr> <br> type = "file" name = "myFile"> <br> <br> <input type = "subt" name = "subt" value = "commit"> </form> </body> </html>
demo3.jsp
<%@ page lenguaje = "java" contentType = "text/html; charset = gb18030" pageEncoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload.*"%> <%@ page import = "org.apache.commons.fileupload.servlet .servlet. import = "org.apache.commons.fileupload.disk.*"%> <%@ page import = "java.util.*"%> <%@ page import = "java.io.*"%> <! Doctype Html public "-// w3c // dtd html 4.01 transición // en"> <%file uplibl " Archivo ("d: // temp"); // cargar directorio de archivos if (! UploadPath.Exists ()) {uploadPath.mkdirs (); } // archivo de directorio de archivos temporal temppathfile = nuevo archivo ("d: // temp // buffer //"); if (! TemppathFile.Exists ()) {TEMPPATHFILE.MKDIRS (); } try {// Cree una fábrica para elementos de archivo basados en disco DiskFileItemFactory Factory = new DiskFileItemFactory (); // establecer restricciones de fábrica fábrica.setsizethreshold (4096); // Establecer el tamaño del búfer, aquí está 4kb fábrica.setRepository (TEMPPATHFILE); // Establecer directorio de búfer // Cree un nuevo controlador de carga de archivo ServletFileUpload upload = new ServLetFileUpload (fábrica); // establecer la carga de restricción de tamaño general de solicitud. SetSizEmax (4194304); // Establecer el tamaño máximo del archivo, aquí está la lista de 4 mb <StilEitem> elementos = upload.parserequest (request); // Obtenga todos los archivos Iterator <FilleItem> i = items.iterator (); while (i.hasnext ()) {fileItem fi = (fileItem) I.Next (); Cadena filename = fi.getName (); if (filename! = null) {archivo fullFile = nuevo archivo (fi.getName ()); Archivo savedfile = nuevo archivo (uploadPath, fullfile .getName ()); fi.write (SavedFile); }} OUT.print ("Subir éxito"); } catch (Exception e) {E.PrintStackTrace (); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = GB18030"> <title> File Subload </title> </head> <body> </body> </html> Ejemplo 4
Use servlet para implementar la carga de archivos.
Subir.java
paquete com.zj.sample; import java.io.file; import java.io.ioException; import java.util.iterator; import java.util.list; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; import org.apache.commons.fileUpload.fileitem; import org.apache.commons.fileupload.disk.diskfileitemfactory; import org.apache.commons.fileupload.servlet.servletfileplroplaad; @SupplesSwarnings ("Serial") La carga de clase pública extiende httpservlet {private string uploadPath = "d: // temp"; // Directorio para cargar archivos Cadena privada temppath = "d: // temp // buffer //"; // Archivo de directorio de archivos temporal TEMPPATHFILE; @SupplesSwarnings ("sin verificar") public void dopost (httpservletRequest solicitud, respuesta httpServletResponse) lanza ioexception, servletException {try {// crea una fábrica para archivos basados en discos DiskFileMFactory Factory = new DiskFileitemFactory (); // establecer restricciones de fábrica fábrica.setsizethreshold (4096); // Establecer el tamaño del búfer, aquí está 4kb fábrica.setRepository (TEMPPATHFILE); // Establecer directorio de búfer // Cree un nuevo controlador de carga de archivo ServletFileUpload upload = new ServLetFileUpload (fábrica); // establecer la carga de restricción de tamaño general de solicitud. SetSizEmax (4194304); // Establecer el tamaño máximo del archivo, aquí está la lista de 4 mb <StilEitem> elementos = upload.parserequest (request); // Obtenga todos los archivos Iterator <FilleItem> i = items.iterator (); while (i.hasnext ()) {fileItem fi = (fileItem) I.Next (); Cadena filename = fi.getName (); if (filename! = null) {archivo fullFile = nuevo archivo (fi.getName ()); Archivo savedfile = nuevo archivo (uploadPath, fullfile.getName ()); fi.write (SavedFile); }} System.out.print ("cargar éxito"); } catch (Exception e) {// La página de error se puede saltar E.PrintStackTrace (); }} public void init () lanza ServletException {archivo uploadFile = nuevo archivo (uploadPath); if (! uploadFile.Exists ()) {uploadFile.mkdirs (); } Archivo TEMPPATHFILE = nuevo archivo (TEMPPATH); if (! TemppathFile.Exists ()) {TEMPPATHFILE.MKDIRS (); }}} demo4.html
<html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> file upload </title> </head> <body> // action = "fileupload" corresponde a la configuración de <Url-pattern> en <ervlet-mapping> en web.xml. <form de nombre = "myform" action = "fileUpload" método = "post" enctype = "multipart/form-data"> archivo: <br> <input type = "file" name = "myfile"> <br> <br> <input type = "enviar" name = "enviar" value = "commit"> </form> </body> </html>
web.xml
<Servlet> <Servlet-name> upload </servlet-name> <ervlet-class> com.zj.sample.upload </servlet-class> </servlet> <ervlet-mapping> <ervlet-name> upload </servlet-name> <url-pattern>/fileupload </sl-pattern> </servlet-mapping>
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.