首页 > 编程 > Java > 正文

java实现动态上传多个文件并解决文件重名问题

2019-11-26 14:30:10
字体:
来源:转载
供稿:网友

本文分为两大方面进行讲解:

一、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多文件上传,解决了文件重名问题,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表