java实现动态上传多个文件并解决文件重名问题
程序员文章站
2024-03-08 23:49:34
本文分为两大方面进行讲解:
一、java实现动态上传多个文件
二、解决文件重命名问题java
供大家参考,具体内容如下
1、动态上传多个文件
<...
本文分为两大方面进行讲解:
一、java实现动态上传多个文件
二、解决文件重命名问题java
供大家参考,具体内容如下
1、动态上传多个文件
<form name="xx" action="<c:url value='/up3servlet'/>" method="post" enctype="multipart/form-data"> <table id="tb" border="1"> <tr> <td> file: </td> <td> <input type="file" name="file"> <button onclick="_del(this);">删除</button> </td> </tr> </table> <br/> <input type="button" onclick="_submit();" value="上传"> <input onclick="_add();" type="button" value="增加"> </form> </body> <script type="text/javascript"> function _add(){ var tb = document.getelementbyid("tb"); //写入一行 var tr = tb.insertrow(); //写入列 var td = tr.insertcell(); //写入数据 td.innerhtml="file:"; //再声明一个新的td var td2 = tr.insertcell(); //写入一个input td2.innerhtml='<input type="file" name="file"/><button onclick="_del(this);">删除</button>'; } function _del(btn){ var tr = btn.parentnode.parentnode; //alert(tr.tagname); //获取tr在table中的下标 var index = tr.rowindex; //删除 var tb = document.getelementbyid("tb"); tb.deleterow(index); } function _submit(){ //遍历所的有文件 var files = document.getelementsbyname("file"); if(files.length==0){ alert("没有可以上传的文件"); return false; } for(var i=0;i<files.length;i++){ if(files[i].value==""){ alert("第"+(i+1)+"个文件不能为空"); return false; } } document.forms['xx'].submit(); } </script> </html>
遍历所有要上传的文件
2、解决文件的重名的问题
package 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.http.httpservlet; import 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; 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,new file("d:/a")); servletfileupload up = new servletfileupload(disk); try{ list<fileitem> list = up.parserequest(request); //只接收图片*.jpg-iamge/jpege.,bmp/imge/bmp,png, list<string> imgs = new arraylist<string>(); for(fileitem file :list){ if(file.getcontenttype().contains("image/")){ string filename = file.getname(); filename = filename.substring(filename.lastindexof("\\")+1); //获取扩展 string extname = filename.substring(filename.lastindexof("."));//.jpg //uuid string uuid = uuid.randomuuid().tostring().replace("-", ""); //新名称 string newname = uuid+extname; //在这里用uuid来生成新的文件夹名字,这样就不会导致重名 fileutils.copyinputstreamtofile(file.getinputstream(), new file(path+"/"+newname)); //放到list imgs.add(newname); } file.delete(); } request.setattribute("imgs",imgs); request.getrequestdispatcher("/jsps/imgs.jsp").forward(request, response); }catch(exception e){ e.printstacktrace(); } } }
以上实现了java多文件上传,解决了文件重名问题,希望对大家的学习有所帮助。