`
jay88489
  • 浏览: 70557 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用commons-fileupload实现多个文件上传

    博客分类:
  • J2EE
阅读更多
   1. <html>  
   2. <head>  
   3.     <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
   4.     <title>File upload</title>  
   5. </head>  
   6. <body>  
   7.     <form name="myform" action="demo2.jsp" method="post"  
   8.        enctype="multipart/form-data">  
   9.        File1:<br>  
  10.        <input type="file" name="myfile"><br>  
  11.        File2:<br>  
  12.        <input type="file" name="myfile"><br>  
  13.        <br>  
  14.        <input type="submit" name="submit" value="Commit">  
  15.     </form>  
  16. </body>  
  17. </html>  

   1. package com.zj.sample;  
   2.    
   3. import java.io.File;  
   4. import java.io.IOException;  
   5. import java.util.Iterator;  
   6. import java.util.List;  
   7.    
   8. import javax.servlet.ServletException;  
   9. import javax.servlet.http.HttpServlet;  
  10. import javax.servlet.http.HttpServletRequest;  
  11. import javax.servlet.http.HttpServletResponse;  
  12.    
  13. import org.apache.commons.fileupload.DiskFileUpload;  
  14. import org.apache.commons.fileupload.FileItem;  
  15. import org.apache.commons.fileupload.FileUploadException;  
  16. import org.apache.commons.fileupload.disk.DiskFileItemFactory;  
  17. import org.apache.commons.fileupload.servlet.ServletFileUpload;  
  18.    
  19. @SuppressWarnings("serial")  
  20. public class Upload extends HttpServlet {  
  21.     private String uploadPath = "D:\\temp"; // 上传文件的目录  
  22.     private String tempPath = "d:\\temp\\buffer\\"; // 临时文件目录  
  23.     File tempPathFile;  
  24.    
  25.     @SuppressWarnings("unchecked")  
  26.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  27.            throws IOException, ServletException {  
  28.          
  29.         String msg = "";  
  30.         DiskFileUpload fu = new DiskFileUpload();  
  31.         // 设置允许用户上传文件大小,单位:字节  
  32.         // fu.setSizeMax(10000000);  
  33.         // 设置最多只允许在内存中存储的数据,单位:字节  
  34.         // fu.setSizeThreshold(4096);  
  35.         // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录  
  36.         //(临时存放目录,文件上传完毕后有办法清除它吗?)  
  37.         fu.setRepositoryPath("D:\\TEMP");  
  38.         //开始读取上传信息  
  39.         List fileItems = null;  
  40.         try {  
  41.             fileItems = fu.parseRequest(request);  
  42.         } catch (FileUploadException e1) {  
  43.             // TODO 自动生成 catch 块  
  44.             e1.printStackTrace();  
  45.         }  
  46.         // 依次处理每个上传的文件  
  47.         Iterator iter = fileItems.iterator();  
  48.         while (iter.hasNext())  
  49.         {  
  50.             FileItem item = (FileItem) iter.next();  
  51.             //忽略其他不是文件域的所有表单信息  
  52.             if (!item.isFormField())  
  53.             {  
  54.                 String name = item.getName();//获取上传的文件名  
  55.                 long size = item.getSize();//获取上传的文件大小(字节为单位)  
  56.                 if ((name == null || name.equals("")) && size == 0)  
  57.                 continue;//跳到while检查条件  
  58.                   
  59.                 System.out.println("<tr>");  
  60.                 System.out.println("<td>" + name + "</td>");  
  61.                 System.out.println("<td>" + size + "</td>");  
  62.                   
  63.                 //以下为文件名处理,将上传的文件保存在项目所在目录下。  
  64.                 //获取文件名字符串的长度  
  65.                 int end = name.length();  
  66.                 //返回在此字符串中最右边出现的指定子字符串的索引。  
  67.                 int begin = name.lastIndexOf("\\");  
  68.                 File savedFile = new File("c:\\TEMP", name.substring(  
  69.                 begin + 1, end));  
  70.                 try {  
  71.                     item.write(savedFile);  
  72.                 } catch (Exception e) {  
  73.                     // TODO 自动生成 catch 块  
  74.                     e.printStackTrace();  
  75.                 }  
  76.             }  
  77.         }  
  78.           
  79.           
  80.         try {  
  81.            // Create a factory for disk-based file items  
  82.            DiskFileItemFactory factory = new DiskFileItemFactory();  
  83.    
  84.            // Set factory constraints  
  85.            factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb  
  86.            factory.setRepository(tempPathFile);// 设置缓冲区目录  
  87.    
  88.            // Create a new file upload handler  
  89.            ServletFileUpload upload = new ServletFileUpload(factory);  
  90.    
  91.            // Set overall request size constraint  
  92.            upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB  
  93.    
  94.            List<FileItem> items = upload.parseRequest(request);// 得到所有的文件  
  95.            Iterator<FileItem> i = items.iterator();  
  96.            while (i.hasNext()) {  
  97.               FileItem fi = (FileItem) i.next();  
  98.               String fileName = fi.getName();  
  99.               if (fileName != null) {  
 100.                   File fullFile = new File(fi.getName());  
 101.                   File savedFile = new File(uploadPath, fullFile.getName());  
 102.                   fi.write(savedFile);  
 103.               }  
 104.            }  
 105.            System.out.print("upload succeed");  
 106.        } catch (Exception e) {  
 107.            // 可以跳转出错页面  
 108.            e.printStackTrace();  
 109.        }  
 110.     }  
 111.    
 112.     public void init() throws ServletException {  
 113.        File uploadFile = new File(uploadPath);  
 114.        if (!uploadFile.exists()) {  
 115.            uploadFile.mkdirs();  
 116.        }  
 117.        File tempPathFile = new File(tempPath);  
 118.         if (!tempPathFile.exists()) {  
 119.            tempPathFile.mkdirs();  
 120.        }  
 121.     }  
 122. }   
分享到:
评论

相关推荐

    使用commons-fileupload实现的文件上传和下载

    本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和下载,并确保在整个过程中不会出现中文乱码问题。 1. **Apache Commons FileUpload简介** Apache Commons FileUpload是一个开源...

    commons-fileupload-1.2.1.jar 和commons-io-1.4.jar

    在实际开发中,当你需要在Web应用中实现文件上传功能时,首先会配置`commons-fileupload-1.2.1.jar`来解析请求,然后利用`commons-io-1.4.jar`处理上传后的文件,比如保存到服务器的指定目录,或者进行一些预处理...

    commons-fileupload.jar和commons-io.jar

    Apache Commons FileUpload和Commons IO两个库是Java中处理文件上传的关键组件,它们为SpringMVC和MyBatis这样的框架提供了强大的支持。本篇文章将深入探讨这两个库以及它们在图片处理中的作用。 首先,`commons-...

    文件上传两个jar包commons-fileupload-1.3.1和commons-io-2.4

    它支持多部分解析,可以处理多个文件上传,并且具有处理大文件和内存管理的优化机制,防止服务器内存被大量文件内容消耗殆尽。此外,它还提供了解析文件项、获取文件名、文件大小等信息的功能。 `commons-io-2.4....

    commons-fileupload-1.3.2jar包和commons-io-2.5jar包.zip

    Apache Commons FileUpload与Apache Commons IO是Java开发中处理文件上传和I/O操作的重要库。这两个库在处理Web应用,特别是基于JSP(JavaServer Pages)的文件上传功能时,扮演着核心角色。在这个主题中,我们将...

    commons-fileupload-1.2.2.jar和commons-io-2.4.jar包

    在实际应用中,开发者通常会结合Servlet或Spring MVC等框架,利用FileUpload和IO库提供的API来构建文件上传功能。例如,使用`DiskFileItemFactory`配置临时存储路径,创建`ServletFileUpload`实例来解析请求,再通过...

    commons-fileupload文件上传实例

    本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** Apache Commons FileUpload是Apache软件基金会开发的一个开源组件,专门处理HTTP...

    java文件上传jar(commons-fileupload-1.2.1.jar,commons-io-2.0.1.jar)

    通过结合使用Apache Commons FileUpload和Commons IO,开发者可以构建出高效且稳定的文件上传功能,同时避免了自己实现这些复杂逻辑的麻烦。这两个库的兼容性良好,广泛应用于各种Java Web项目中,是Java开发者的...

    commons-fileupload和smartupload实现文件上传

    接下来,Smart Upload是另一个文件上传组件,它提供了更丰富的API和更友好的操作方式。相比于Commons FileUpload,Smart Upload提供了更强大的文件上传、预览、裁剪等特性,但目前社区支持和更新相对较少。使用Smart...

    webwork2.2.7在action中利用commons-fileupload.jar进行上传或直接读取文件流的配置与源代码及实例详解

    在这个教程中,我们将探讨如何在WebWork 2.2.7的Action中利用Apache Commons FileUpload库来实现文件上传功能,并处理文件流。Apache Commons FileUpload是一个强大的库,专门用于处理HTTP请求中的多部分/表单数据,...

    最新实现上传下载 commons-fileupload-1.3.1和commons-io-2.4 整套下载

    本教程将详细介绍如何利用这两个库在Spring MVC框架中实现文件上传和下载。 `commons-fileupload`是Apache Commons的一个子项目,它专门处理HTTP协议中的多部分请求(multipart/form-data),这是HTML表单进行文件...

    利用commons-fileupload上传组件上传文件(一)

    在本文中,我们将深入探讨如何使用Apache Commons FileUpload组件来实现文件上传功能。Apache Commons FileUpload是一个用于处理HTTP请求中的多部分数据的Java库,它使得在Servlet或JSP应用中处理文件上传变得简单易...

    commons-fileupload和commons-io的jar包

    例如,开发者可以先使用FileUpload解析出上传的文件,然后利用Commons IO将其保存到服务器的指定位置。 这两个库的源代码文件(sources)也一同提供,这对于学习和理解其内部实现机制非常有帮助。通过阅读源码,...

    commons-fileupload.jar和commons-io.jar包

    在开发Java应用程序,尤其是涉及到Web应用中的文件上传功能时,`commons-fileupload.jar`和`commons-io.jar`是两个至关重要的库。这两个JAR文件分别提供了Apache Commons FileUpload和Apache Commons IO项目的功能,...

    commons-fileupload commons-io.jar

    Apache Commons FileUpload是一个专门用于处理HTTP协议中的多部分表单数据的Java库,尤其适用于Web应用中的文件上传功能。在传统的HTTP请求中,表单数据通常是单一的文本,但多部分表单数据允许用户上传文件,如图片...

    commons-fileupload-1.2.1.jar commons-io-1.4.jar

    在使用这两个库进行文件上传时,通常先利用Commons IO处理文件I/O,然后用Commons FileUpload解析HTTP请求中的多部分数据,提取上传的文件。这样可以构建出稳定、健壮的文件上传功能,同时避免了直接处理Servlet API...

    commons-fileupload-1.2.1.jar和commons-io-1.4.jar

    Struts2框架整合这两个库,提供了方便的文件上传Action,使得开发者无需关心底层实现细节。例如,可以创建一个继承自`org.apache.struts2.actions上传ActionSupport`的自定义Action,重写其中的`execute()`方法。在...

    commons-fileupload-1.2.1帮助文档

    《Java Web文件上传:commons-fileupload-1.2.1详解》 在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload库是一个强大的工具,用于处理HTTP协议中的...

    commons-fileupload-1.3.2 commons-io-2.5 Servelet文件上传jar包

    Apache Commons FileUpload库和Commons IO库是Java中实现这一功能的重要工具。这两个库的版本分别为1.3.2和2.5,...在实际应用中,开发者需要考虑性能、安全性和用户体验等多个方面,以实现高效且安全的文件上传功能。

    js结合commons-fileupload实现带进度条的文件上传

    在本文中,我们将深入探讨如何使用JavaScript(JS)结合Apache Commons FileUpload库来实现一个带进度条的文件上传功能,并支持批量上传。这个功能在现代Web应用中非常常见,能够提供用户友好的交互体验。 首先,...

Global site tag (gtag.js) - Google Analytics