Este artigo é dividido em dois aspectos para explicar:
1. Java implementa o upload dinâmico de vários arquivos
2. Resolva o problema de renomeação de arquivos Java
Para sua referência, o conteúdo específico é o seguinte
1. Carregue dinamicamente vários arquivos
<name de forma = "xx" action = "<c: url value = '/up3servlet' //>" method = "post" rtype = "multipart/form-data"> <tabela id = "tb"> <tr> <td> arquivo: </td> <td> <input type = "file" name = "file"> <butt> </tr> </table> <br/> <input type = "Button" onclick = "_ submit ();" value = "upload"> <input onclick = "_ add ();" type = "Button" value = "Add"> </morm> </body> <script type = "text/javascript"> function _add () {var tb = document.getElementById ("tb"); // escreva uma linha var tr = tb.insertrow (); // coluna de gravação var td = tr.insertCell (); // grava dados td.innerhtml = "arquivo:"; // Declare um novo TD var Td2 = tr.InsertCell (); // Escreva uma entrada td2.innerhtml = '<input type = "file" name = "file"/> <botão onclick = "_ del (this);"> excluir </butter>'; } função _del (btn) {var tr = btn.parentnode.parentNode; //alert(tr.TagName); // Obtenha o subscrito de TR na tabela var index = tr.RowIndex; // excluir var tb = document.getElementById ("tb"); tb.deleterow (índice); } function _subMit () {// transtraverse todos os arquivos var arquivos = document.getElementsByName ("arquivo"); if (files.length == 0) {alert ("nenhum arquivo que pode ser carregado"); retornar falso; } for (var i = 0; i <files.length; i ++) {if (arquivos [i] .Value == "") {alert ("" "+(i+1)+" arquivos não podem estar vazios "); retornar falso; }} document.forms ['xx']. submmit (); } </script> </html>Itera através de todos os arquivos para fazer upload
2. Resolva o problema do nome do arquivo duplicado
pacote cn.hx.servlet; importar java.io.file; importar java.io.ioException; importar java.io.printwriter; importar java.util.arraylist; import javax.util.listxception; importação; javax.servlet.http.httpServletReQuest; importar javax.servlet.http.httpServletResponse; importar org.apache.commons.fileupload.fileitem; import org.apache.commons.fileUpload.Disk.DiskEmilemory; org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.io.FileUtils;public class UpImgServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setcharacterencoding ("UTF-8"); String Path = getServletContext (). GetRealPath ("/up"); DiskFileItemFactory Disk = new DiskFileItemFactory (1024*10, novo arquivo ("d:/a")); ServletfileUpload up = new ServletFileUpload (disco); tente {list <FileItem> list = up.parserequest (request); // recebe apenas imagens*.jpg-amge/jpege., Bmp/imge/bmp, png, list <string> imgs = new ArrayList <String> (); para (FileItem File: List) {if (file.getContentType (). FILENAME = FILENAME.SUBSTRING (FILENAME.LASTIndexOF ("//")+1); // obtenha a string de extensão extName = filename.substring (filename.lastindexof (".")); //. // novo nome string newName = uuid+extName; // uuid é usado para gerar um novo nome de pasta, para que não cause o nome duplicado fileUtils.copyInputStreamTofile (FILE.GETINPUTSTREAM (), novo arquivo (caminho+"/"+newname)); // coloque para listar imgs.add (newname); } file.Delete (); } request.setAttribute ("imgs", imgs); request.getRequestDispatcher ("/jsps/imgs.jsp"). Forward (solicitação, resposta); } catch (Exceção e) {e.printStackTrace (); }}}O acima implementa o upload de vários arquivos Java, que resolve o problema dos nomes duplicados de arquivos. Espero que seja útil para o aprendizado de todos.