在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

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

2016-8-29 13:20| 发布者: zhangjf| 查看: 682| 评论: 0

摘要: 本文分为两大方面进行讲解: 一、java实现动态上传多个文件 二、解决文件重命名问题java 供大家参考,具体内容如下 1、动态上传多个文件 form name=xx action=c:url value='/Up3Servlet'/ method=post enctype=mul ...

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

一、java实现动态上传多个文件

二、解决文件重命名问题java

供大家参考,具体内容如下

1、动态上传多个文件

  1. <form name="xx" action="<c:url value='/Up3Servlet'/>" method="post" enctype="multipart/form-data">
  2. <table id="tb" border="1">
  3. <tr>
  4. <td>
  5. File:
  6. </td>
  7. <td>
  8. <input type="file" name="file">
  9. <button onclick="_del(this);">删除</button>
  10. </td>
  11. </tr>
  12. </table>
  13. <br/>
  14. <input type="button" onclick="_submit();" value="上传">
  15. <input onclick="_add();" type="button" value="增加">
  16. </form>
  17. </body>
  18. <script type="text/javascript">
  19. function _add(){
  20. var tb = document.getElementById("tb");
  21. //写入一行
  22. var tr = tb.insertRow();
  23. //写入列
  24. var td = tr.insertCell();
  25. //写入数据
  26. td.innerHTML="File:";
  27. //再声明一个新的td
  28. var td2 = tr.insertCell();
  29. //写入一个input
  30. td2.innerHTML='<input type="file" name="file"/><button onclick="_del(this);">删除</button>';
  31. }
  32. function _del(btn){
  33. var tr = btn.parentNode.parentNode;
  34. //alert(tr.tagName);
  35. //获取tr在table中的下标
  36. var index = tr.rowIndex;
  37. //删除
  38. var tb = document.getElementById("tb");
  39. tb.deleteRow(index);
  40. }
  41. function _submit(){
  42. //遍历所的有文件
  43. var files = document.getElementsByName("file");
  44. if(files.length==0){
  45. alert("没有可以上传的文件");
  46. return false;
  47. }
  48. for(var i=0;i<files.length;i++){
  49. if(files[i].value==""){
  50. alert("第"+(i+1)+"个文件不能为空");
  51. return false;
  52. }
  53. }
  54. document.forms['xx'].submit();
  55. }
  56. </script>
  57. </html>
复制代码

遍历所有要上传的文件

2、解决文件的重名的问题

  1. package cn.hx.servlet;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.UUID;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import org.apache.commons.fileupload.FileItem;
  13. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
  14. import org.apache.commons.fileupload.servlet.ServletFileUpload;
  15. import org.apache.commons.io.FileUtils;
  16. public class UpImgServlet extends HttpServlet {
  17. public void doPost(HttpServletRequest request, HttpServletResponse response)
  18. throws ServletException, IOException {
  19. request.setCharacterEncoding("UTF-8");
  20. String path = getServletContext().getRealPath("/up");
  21. DiskFileItemFactory disk =
  22. new DiskFileItemFactory(1024*10,new File("d:/a"));
  23. ServletFileUpload up = new ServletFileUpload(disk);
  24. try{
  25. List<FileItem> list = up.parseRequest(request);
  26. //只接收图片*.jpg-iamge/jpege.,bmp/imge/bmp,png,
  27. List<String> imgs = new ArrayList<String>();
  28. for(FileItem file :list){
  29. if(file.getContentType().contains("image/")){
  30. String fileName = file.getName();
  31. fileName = fileName.substring(fileName.lastIndexOf("\")+1);
  32. //获取扩展
  33. String extName = fileName.substring(fileName.lastIndexOf("."));//.jpg
  34. //UUID
  35. String uuid = UUID.randomUUID().toString().replace("-", "");
  36. //新名称
  37. String newName = uuid+extName; //在这里用UUID来生成新的文件夹名字,这样就不会导致重名
  38. FileUtils.copyInputStreamToFile(file.getInputStream(),
  39. new File(path+"/"+newName));
  40. //放到list
  41. imgs.add(newName);
  42. }
  43. file.delete();
  44. }
  45. request.setAttribute("imgs",imgs);
  46. request.getRequestDispatcher("/jsps/imgs.jsp").forward(request, response);
  47. }catch(Exception e){
  48. e.printStackTrace();
  49. }
  50. }
  51. }
复制代码

以上实现了java多文件上传,解决了文件重名问题,希望对大家的学习有所帮助。

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-7-7 01:40

Copyright 2015-2025 djqfx

返回顶部