La carga de archivos es muy común en las aplicaciones web. Es muy fácil implementar la función de carga de archivos en el entorno web Java, porque ya hay muchos componentes desarrollados en Java para la carga de archivos en Internet. Este artículo utiliza el componente más comunitario de archivo de archivo como ejemplo para demostrar cómo agregar la función de carga de archivos a las aplicaciones web Java.
El componente Commons-FileUpload es uno de los proyectos de código abierto de Apache y se puede descargar desde http://commons.apache.org/fileupload/. Este componente es simple y fácil de usar, lo que le permite cargar uno o más archivos a la vez y puede limitar el tamaño del archivo.
Después de descargar, descomprima el paquete zip y copie Commons-FileUpload-1.x.jar a las Apps web de Tomcat/su webapp/web-Inf/lib/. Si el directorio no existe, cree su propio directorio.
Cree un nuevo uploadServlet.java para la carga de archivos:
El paquete com.liaoxuefeng.web; public class FileUploadServlet extiende httpservlet {private string uploadDir = "c: // temp"; @Override protegido void dopost (httpservletrequest req, httpservletreponse resp) lanza ServletException, ioexception {// toDo:}}Cuando el servlet recibe la solicitud de publicación emitida por el navegador, implementa la carga de archivos en el método dopost (). Necesitamos atravesar el FileItemIterator y obtener cada FileItemStream:
@Overrideprotected void dopost (httpservletRequest req, httpservletResponse resp) lanza ServletException, ioexception {try {servletFileUpload upload = new ServletFileUpload (); // Establecer el tamaño del archivo MAX en 1 MB: upload.setFilesizeMax (1024 * 1024); FileItemIterator it = upload.getItEmiterator (req); // manejar con cada archivo: while (it.hasnext ()) {fileItemStream item = it.next (); if (! item.isformfield ()) {// Es una carga de archivo: manejilitem (elemento); }} req.getRequestDIsPatcher ("Success.jsp"). Forward (req, resp); } catch (fileUploadException e) {tire nueva servletException ("No se puede cargar archivo.", e); }}Lea el flujo de entrada de los archivos cargados en el método handleFileItem () y luego escríbelo para cargardir, y el nombre del archivo se genera aleatoriamente por UUID:
void manefileItem (elemento fileItemStream) lanza IOException {System.out.println ("Subir archivo:" + item.getName ()); Archivo newUploadFile = nuevo archivo (uploadDir + "/" + uuid.randomuuid (). ToString ()); byte [] buffer = new Byte [4096]; InputStream Input = NULL; OutputStream output = null; intente {input = item.openStream (); salida = new BufferedOutputStream (nuevo FileOutputStream (newUploadFile)); for (;;) {int n = input.read (buffer); if (n == (-1)) ruptura; output.write (buffer, 0, n); }} finalmente {if (input! = null) {try {input.close (); } catch (ioException e) {}}}Si desea leer la carpeta de carga especificada en el archivo de configuración web.xml, puede inicializarla en el método init ():
@OverridePublic Void Init (ServletConfig config) lanza ServletException {super.init (config); this.uploaddir = config.getInitParameter ("dir");}Finalmente, configure el servlet en web.xml:
<? xml versión = "1.0" encoding = "utf-8"?> <! DOCTYPE WEB-APP público "-// Sun Microsystems, Inc.//dtd Aplicación web 2.3 // en" "http://java.sun.com/dtd/web-app_2_3.dtd"> <bepp> <vlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.liaoxuefeng.web.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping></web-app>
Después de configurar el servlet, inicie Tomcat o resina y escriba una prueba simple de índice.htm:
<html> <body> <p> FileUploadServlet Demo </p> <form de nombre = "form1" action = "upload" método = "post" enctype = "multipart/formy-data"> <input type = "file" name = "file"/> <input type = "enviar" name = "button" valor = "enviar"/> </form> </body> </html>
Tenga en cuenta que Action = "Cargar" especifica la URL de asignación de FileUploadServlet que maneja archivos cargados.
Cuando la carga es exitosa, Success.jsp se muestra, de lo contrario, se lanza una excepción. Si el tamaño del archivo cargado excede 1 MB que establecemos, obtendremos un archivo de archivos ,MitExcedEdException.
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.