Aquí uso archivos basados en Servlet, carga asincrónica. No digo muchas tonterías y solo subo el código. . .
paquete com.future.zfs.util; import java.io.file; import java.io.ioException; import java.io.printwriter; import java.util.iterator; import java.util.list; import javax.servlet.servletException; import javax.servlet.http.httservlet; import; importar; importar; import 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.fileuploadbase.sizeLImiteScedEdException; import org.apache.commons.fileUpload.disk.diskFileItemFactory; importar org.apache.commons.fileUpload.servlet.servletfileplroad; @supresswarnings (") sierial) FileUploadServlet extiende httpservlet {final long max_size = 10 * 1024 * 1024; // Establezca el archivo máximo cargado en 10m // Lista de formatos de archivo que se permitan cargar una cadena final [] IlowType = nueva cadena [] {"jpg", "jpeg", "gif", "txt", "doc", "docx", "mp3", "wma", "m4a", "xls"}; public FileUploadServlet () {super (); } public void destruir () {super.destroy (); } @Override Servicio void protegido (solicitud httpservletRequest, httpservletResponse respuesta) arroja servletException, ioexception {respuesta.setContentType ("texto/html"); // Establezca la codificación de caracteres en UTF-8, de modo que la respuesta de la pantalla de carácter chino. SetcharacterEncoding ("UTF-8"); // Instanciar una fábrica de archivos de disco duro para configurar el componente de carga ServletFileUpload DiskFileItemFactory DFIF = new DiskFileItemFactory (); dfif.setsizethreshold (4096); // Establecer el tamaño de memoria utilizado para almacenar temporalmente los archivos al cargar archivos, aquí está 4K. Más de lo que la parte existirá temporalmente en el disco duro dfif.setRepository (nuevo archivo (request.getRealPath ("/") + "uploadTemp")); // Establezca el directorio donde se almacenan los archivos temporales, el directorio de uploadTempp en el directorio raíz de la web // instanciar el componente de carga con el servicio de fábrica anterior. ServletFileUpload (dfif); // Establecer el tamaño máximo de carga SFU.SetSizEmax (max_size); PrintWriter out = Response.getWriter (); // Obtenga una lista de todos los campos de carga de la lista de solicitudes filelist = null; intente {fileList = sfu.parserequest (request); } catch (fileUploadException e) {// manejar el tamaño del archivo demasiado grande excepción if (e instanciaf sizeLImitexceedEdException) {out.println ("{mensaje: 'El tamaño del archivo excede el tamaño especificado:"+max_size+"byte'}"); devolver; } E.PrintStackTrace (); } // sin carga de archivo if (fileList == null || fileList.size () == 0) {out.println ("{Mensaje: 'Seleccione el archivo de carga'}"); devolver; } // Obtenga todos los archivos cargados iterator fileitr = fileList.iterator (); // bucle todos los archivos mientras (fileitr.hasnext ()) {fileItem fileItem = null; Ruta de cadena = nulo; tamaño largo = 0; // Obtenga el archivo actual fileitem = (fileItem) fileitr.next (); // ignora el campo de formulario simple en lugar del dominio de archivo del dominio cargado (<input type = "text" />, etc.) if (fileitem == null || fileItem.isformfield ()) {continuar; } // Obtenga la ruta completa de la ruta del archivo = fileitem.getName (); // Obtener el tamaño del archivo size = fileItem.getSize (); if ("" .equals (ruta) || size == 0) {out.println ("{Mensaje: 'Seleccione el archivo de carga'}"); devolver; } // Obtenga el nombre de archivo de la cadena de ruta eliminada t_name = path.substring (path.lastindexof ("//") + 1); // Obtenga la extensión del archivo (el nombre completo se obtendrá sin una extensión) String t_ext = t_name.substring (t_name.lastindexof (".") + 1); // niega el tipo de archivo fuera del formato de archivo especificado int int loodextCount = iSchoTType.Length; for (; nowFlag <odedExtCount; IllowFlag ++) {if (IlowType [IllowFlag] .Equals (T_EXT)) Break; } if (DESHINGFLAG == LEACHEXTCount) {String Message = ""; For (DESHINGFLAG = 0; IllowFLAG <permitodExtCount; IllowFlag ++) {Message+= "*." + lettype [nowFlag] + ""; } out.println ("{Mensaje: 'Por favor cargue el siguiente tipo de archivo"+Mensaje+"'}"); devolver; } long Now = System.CurrentTimemillis (); // Generar el nombre del archivo Guardado después de la carga de acuerdo con la cadena de tiempo del sistema prefix = String.ValueOf (ahora); // La ruta completa del archivo final guardado se guarda en el directorio de carga en el directorio raíz de la web u_name = request.getRealPath ("/") + "cargar/" + prefijo + ". + t_ext; // La ruta del nombre del archivo original = request.getRealPath ("/") + "cargar/" + ruta; pruebe {// Guardar el archivo fileitem.write (nuevo archivo (ruta)); Respuesta.SetStatus (200); out.println ("{{Message:/" El archivo de archivo con éxito. Guardado como: " + prefijo +". " + t_ext +" tamaño de archivo: " + size +" byte/"}"); } catch (Exception e) {E.PrintStackTrace (); }}}} web.xml
<Servlet> <Servlet-name> fileUploadServlet </servlet-name> <ervlet-class> com.future.zfs.util.fileUploadservlet </servlet-class> </servlet> <servlet-mapping> </Servlet-mapping>
Página de carga
<%@ page lenguaje = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <! DocType html público "-// w3c // dtd html 4.01 transición // en" " "http://www.w3.org/tr/html4/loose.dtd"> <html> <fead> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> title aquí </titter> <script type = "text/javascript" src = "js/jQuery.js"> </script> <script type = "text/javaScript" src = "js/ajaxfileUpload.js"> </script> <script type = "text/javaScript"> function aJaxFileUpload () {$ ("#Carging") .AJAXStAR }) // Mostrar una imagen cuando inicia cargar el archivo.AJAXCOMPLETE (function () {$ (this) .hide ();}); // oculte la imagen después de que se cargue el archivo. $. AJAXFILEPLOAD ({URL: 'FileUploadServlet', // La dirección de solicitud de servicio de servidor se usa para el archivo Secureuri: False, //. fileElementId:'file',//The id attribute of the file upload space<input type="file" id="file" name="file" /> dataType: 'json',//The return value type is generally set to json success: function (data, status) //The server successfully responds to the processing function { //alert(data.message);//The data in the message is the member variable $('#myspan') definido en Struts2. If (typeof (data.error)! = 'Undefined') {if (data.error! = '') {//Alert(data.error); $ ('#myspan'). html (data.message); } else {//alert(data.message); $ ('#myspan'). html (data.message); }}}, error: función (datos, estado, e) // función de manejo de falla de respuesta del servidor {// alerta (e); $ ('#myspan'). html (e); }}) return false; } </script> </head> <body> <img src = "images/loading.gif" id = "loading" style = "Display: None;"> <span style = "color: rojo;" id = "myspan"> </span> <br/> <input type = "file" id = "file" name = "file"/> <br/> <input type = "button" value = "upload" onClick = "return aJaxFileUpload ();"> <a href = "FileDownlowLoadservlet? </body> </html> Cabe señalar que cuando se usa AjaxFileUpload para cargar según Servlet, debe configurar Response.SetContentType ("Text/Html"); Aunque DataType: 'JSON' está configurado en JSON, aún necesita establecer Response.SetContentType ("Text/Html"); De lo contrario, no se pueden obtener los datos devueltos por el servidor y aparecerá un cuadro de diálogo.
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.