Este artículo se divide en dos aspectos para explicar:
1. Java implementa la carga dinámica de múltiples archivos
2. Resolver el problema de cambio de nombre de archivos Java
Para su referencia, el contenido específico es el siguiente
1. Cargar dinámicamente múltiples archivos
<form de nombre = "xx" action = "<c: url value = '/up3servlet' //>" método = "post" enctype = "multipart/form-data-data"> <table id = "tb"> <tr> <td> file: </td> <td> <input type = "file" name = "file"> <bootin ondcLick = "_ del (this);;" Delet </tr> </bable> <br/> <input type = "Button" onClick = "_ Subt ();" valor = "cargar"> <input onClick = "_ add ();" type = "botón" value = "add"> </form> </body> <script type = "text/javaScript"> function _add () {var tb = document.getElementById ("tb"); // Escribir una línea var tr = tb.insertrow (); // Escribir columna var td = tr.insertcell (); // escribir datos td.innerhtml = "archivo:"; // declarar un nuevo TD var td2 = tr.insertcell (); // Escribe una entrada td2.innerhtml = '<input type = "file" name = "file"/> <button onClick = "_ del (this);"> Eliminar </botón>'; } función _del (btn) {var tr = btn.parentnode.parentnode; //alert(tr.tagname); // Obtener el subíndice de TR en la tabla Var index = tr.rowindex; // eliminar var tb = document.getElementById ("tb"); tb.deleterow (índice); } function _submit () {// Transtraverse Todos los archivos var archivos = document.getElementsByName ("archivo"); if (files.length == 0) {alert ("no hay archivo que se pueda cargar"); devolver falso; } for (var i = 0; i <files.length; i ++) {if (files [i] .value == "") {alert (""+(i+1)+"Los archivos no pueden estar vacíos"); devolver falso; }} document.forms ['xx']. Subt (); } </script> </html>Iterar a través de todos los archivos para cargar
2. Resuelva el problema del nombre de archivo duplicado
paquete cn.hx.servlet; import java.io.file; import java.io.ioException; import java.io.printwriter; import java.util.arrayList; import java.util.list; import java.util.uuid; import javax.servlet.servletexception; import javax.servlet.servlet.htttttttttttpServlet; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpServletResponse; importar org.apache.commons.fileUpload.FileItem; import org.apache.commons.fileupload.disk.diskfileMfactory; importación org.apache.commons.fileupload.servlet.servletfileUpload; import org.apache.commons.io.fileUtils; public class UpImgServlet extiende httpservlet {public void dopost (httpservletRequest solicitud, httpServletResponse Respuesta) lanza ServletException, iOoCost (httpServletRequest solicitud, httpServletResponse Respuesta) lanzada ServletException, iOOException { request.setcharacterEncoding ("UTF-8"); String ruta = getServletContext (). GetRealPath ("/up"); DiskFileItemFactory disk = new DiskFileItemFactory (1024*10, nuevo archivo ("d:/a")); ServletFileUpload up = new ServLetFileUpload (disco); intente {list <StilEitem> list = up.parserequest (request); // Recibe solo imágenes*.jpg-diamge/jpege., Bmp/imge/bmp, png, list <string> imgs = new ArrayList <String> (); for (archivo fileitem: list) {if (file.getContentTypee (). Contins ("Image/")) {String filename = file.getName (); FileName = FileName.Substring (FileName.lastIndexof ("//")+1); // GET Extension String ExtName = FileName.Substring (FileName.lastIndexOf (".")); //. Jpg // uuid String uuid = uuid.randomuuid (). ToString (). Reemplazar ("-", ""); // nueva cadena de nombre NewName = uuid+extname; // UUID se usa para generar un nuevo nombre de carpeta, de modo que no cause el nombre duplicado fileUtils.copyInputStreamToFile (file.getInputStream (), nuevo archivo (ruta+"/"+nieve)); // poner en la lista IMGS.Add (Newname); } file.delete (); } request.setAttribute ("IMGS", IMGS); request.getRequestDIsPatcher ("/jsps/imgs.jsp"). Forward (solicitud, respuesta); } catch (Exception e) {E.PrintStackTrace (); }}}Lo anterior implementa la carga de múltiples archivos Java, que resuelve el problema de los nombres duplicados de archivos. Espero que sea útil para el aprendizaje de todos.