Cet article est divisé en deux aspects pour expliquer:
1. Java implémente le téléchargement dynamique de plusieurs fichiers
2. Résoudre le problème de renom sur le fichier java
Pour votre référence, le contenu spécifique est le suivant
1. Télécharger dynamiquement plusieurs fichiers
<form name = "xx" action = "<c: url value = '/ up3Servlet' //>" method = "post" EncType = "multipart / form-data"> <table id = "tb"> <tr> <td> file: </ td> <td> <intry type = "file" name = "file"> <bouton onClick = "_ del (this);"> derelent </ / bouton onClick = "_ del (this);"> derelent </ TD> ^ bouton surclick = "_ del (this);"> Derelet </ TD> ^ Button onClick = "_ del (this);"> Derelet </ TD> <TD ONCLICK = "_ del (this);"> Derele </ tr> </ table> <br/> <entrée type = "bouton" onClick = "_ soumise ();" value = "upload"> <entrée onclick = "_ add ();" type = "Button" value = "add"> </ form> </ body> <script type = "text / javascript"> function _add () {var tb = document.getElementByid ("tb"); // Écrivez une ligne var tr = tb.insertrow (); // Colonne d'écriture var td = tr.insertCell (); // Écrivez des données td.innerhtml = "fichier:"; // déclare un nouveau td var td2 = tr.insertCell (); // Écrivez une entrée td2.innerhtml = '<input type = "file" name = "file" /> <button onClick = "_ del (this);"> delete </utton>'; } fonction _del (btn) {var tr = btn.parentNode.parentNode; //alert(tr.tagname); // obtient l'indice de TR dans le tableau var index = tr.RowIndex; // supprimer var tb = document.getElementById ("TB"); tb.deleterow (index); } fonction _Submit () {// transtaverse tous les fichiers var files = document.getElementsByName ("fichier"); if (files.length == 0) {alert ("aucun fichier qui peut être téléchargé"); retourne false; } pour (var i = 0; i <files.length; i ++) {if (files [i] .value == "") {alert ("" + (i + 1) + "Les fichiers ne peuvent pas être vides"); retourne false; }} document.forms ['xx']. soumis (); } </ script> </html>Itérer via tous les fichiers pour télécharger
2. Résoudre le problème du nom du fichier en double
Package Cn.hx.servlet; Importer 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.http.httples; 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.servletfileupload; import org.apache.commons.io.fileutils; classe publique upimgServlet étend httpservlet {public void dopost (httpservletRequest request, httpservetResponse Response) throws servlexe request.SetcharAtterencoding ("UTF-8"); String path = getServletContext (). GetRealPath ("/ up"); DiskfileItemFactory disk = new DiskFileItemFactory (1024 * 10, nouveau fichier ("d: / a")); ServletFileUpload up = new ServletFileUpload (disque); essayez {list <FeleItem> list = up.parsErequest (request); // ne reçoit que des images * .jpg-iamge / jpege., Bmp / imge / bmp, png, list <string> imgs = new ArrayList <string> (); For (FileItem File: list) {if (file.getContentType (). Contise ("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 (). Remplace ("-", ""); // new name String newname = uuid + extname; // UUID est utilisé pour générer un nouveau nom de dossier, afin qu'il ne provoque pas le nom en double fileutils.copyInputStreamtoFile (file.getInputStream (), nouveau fichier (path + "/" + newname)); // mis sur lister imgs.add (newname); } file.delete (); } request.setAttribute ("imgs", imgs); request.getRequestDispatcher ("/ jsps / imgs.jsp"). Forward (demande, réponse); } catch (exception e) {e.printStackTrace (); }}}Le ci-dessus implémente le téléchargement multi-fichiers Java, qui résout le problème des noms de double fichier. J'espère que cela sera utile à l'apprentissage de tous.