`

用commons FileUpload实现文件上传

    博客分类:
  • java
阅读更多
  1. import java.io.File;   
  2. import java.util.ArrayList;   
  3. import java.util.Iterator;   
  4. import java.util.List;   
  5.   
  6. import javax.servlet.RequestDispatcher;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.http.HttpServlet;   
  9. import javax.servlet.http.HttpServletRequest;   
  10. import javax.servlet.http.HttpServletResponse;   
  11.   
  12. import org.apache.commons.fileupload.FileItem;   
  13. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  14. import org.apache.commons.fileupload.servlet.ServletFileUpload;   
  15.   
  16. public class UploadFileServlet extends HttpServlet {   
  17.     private static final long serialVersionUID = 56890894234786L;   
  18.      String saveFolder = "falshFolder";   
  19.      String saveTempFolder = "falshTempFolder";   
  20.   
  21.     @SuppressWarnings("unchecked")   
  22.     public void doPost(HttpServletRequest request, HttpServletResponse response)   
  23.             throws ServletException, java.io.IOException {   
  24.          request.setCharacterEncoding("UTF-8");   
  25.   
  26.         // 文件上傳部分   
  27.         boolean isMultipart = ServletFileUpload.isMultipartContent(request);   
  28.            
  29.         if (isMultipart == true) {   
  30.             try {   
  31.                 // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload   
  32.                  DiskFileItemFactory factory = new DiskFileItemFactory();   
  33.                 // 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘   
  34.                  factory.setSizeThreshold(4096);   
  35.                 //设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录   
  36.                  factory.setRepository(new File(request.getRealPath("/")+   
  37.                          saveTempFolder));   
  38.                 // 用配置好的工厂实例化上传组件   
  39.                  ServletFileUpload upload = new ServletFileUpload(factory);   
  40.                    
  41.                 // 得到所有的表单域,它们目前都被当作FileItem   
  42.                  List<FileItem> fileItems = upload.parseRequest(request);   
  43.                  Iterator<FileItem> iter = fileItems.iterator();   
  44.                    
  45.                 // 依次处理每个表单域   
  46.                 while (iter.hasNext()) {   
  47.                      FileItem item = (FileItem) iter.next();   
  48.                        
  49.                     if(item.isFormField()){   
  50.                         // 如果item是正常的表单域   
  51.                          String name = item.getFieldName();   
  52.                          String value = item.getString();   
  53.                          System.out.print("表单域名为:"+name+"表单域值为:"+value);   
  54.                      }   
  55.                     else{   
  56.                         // 如果item是文件上传表单域   
  57.                            
  58.                         // 获得文件名及路径   
  59.                          String fileName = item.getName();   
  60.                         if (fileName != null) {   
  61.                             //获取要上传的文件   
  62.                              File fullFile = new File(item.getName());      
  63.                              String t_ext = fullFile.getName().substring(fullFile.getName().lastIndexOf(".") + 1);   
  64.   
  65.                             // 如果文件存在则上传   
  66.                             if(fullFile.exists()){   
  67.                                 //存放文件的路径   
  68.                                  String filePath = request.getRealPath("/") + saveFolder;   
  69.                                 long now = System.currentTimeMillis();   
  70.                                 // 根据系统时间生成上传后保存的文件名   
  71.                                  String name = String.valueOf(now);   
  72.                                  File fileOnServer = new File(filePath,   
  73.                                          name+"."+t_ext);   
  74.                                  item.write(fileOnServer);   
  75.                                    
  76.                                  System.out.println("文件"+fileOnServer.getName()+"上传成功");   
  77.                                  request.setAttribute("fileName", fullFile.getName());   
  78.                              }   
  79.                          }   
  80.                      }   
  81.                  }                   
  82.              } catch (Exception e) {   
  83.                  e.printStackTrace();   
  84.              }   
  85.          } else {   
  86.              System.out.println("the enctype must be multipart/form-data");   
  87.          }   
  88.            
  89.   
  90.         // 返回原页   
  91.          RequestDispatcher dispatcher = request   
  92.                  .getRequestDispatcher("index.jsp");   
  93.          dispatcher.forward(request, response);   
  94.         return;   
  95.      }   
  96.   
  97.     public void doGet(HttpServletRequest request, HttpServletResponse response)   
  98.             throws ServletException, java.io.IOException {   
  99.          doPost(request, response);   
  100.      }   
  101.   
  102. }  

 

分享到:
评论

相关推荐

    commons-fileupload实现文件上传

    本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...

    Apache Commons fileUpload实现文件上传

    Apache Commons ...总的来说,Apache Commons FileUpload为Java开发者提供了强大的文件上传支持,简化了处理多部分表单数据的过程。了解其工作原理和使用方法,可以帮助我们更好地构建安全、高效的文件上传功能。

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

    通过以上步骤,你可以成功地使用Apache Commons FileUpload实现文件上传和下载功能,并避免中文乱码问题。在实际开发中,还可以结合Spring MVC或Struts等框架,进一步简化代码和提高代码的可维护性。

    commons fileupload实现文件上传的实例代码

    **借助Commons FileUpload组件实现文件上传** Apache Commons FileUpload组件简化了文件上传的处理过程。首先,你需要在项目中引入两个JAR包:`commons-fileupload.jar`和`commons-io.jar`。然后,在Servlet中,你...

    commons-fileupload实现文件上传下载

    ### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...

    commons fileupload实现文件上传

    总的来说,Apache Commons FileUpload是Java Web开发中不可或缺的工具,它简化了文件上传的复杂性,使得开发者能够更专注于业务逻辑,而不用过多关心底层的文件处理细节。正确使用和配置这个库,可以在保证用户体验...

    commons-fileupload文件上传实例

    通过以上步骤,你可以使用Apache Commons FileUpload实现简单的文件上传功能。这个库提供了许多高级特性,如内存和磁盘混合存储、自定义文件保存策略等,可以根据实际项目需求进行深入学习和应用。

    struts1.2和commons-fileupload实现文件上传

    Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...

    使用commons-fileupload上传文件

    通过使用`commons-fileupload`,开发者可以方便地在Java Web应用中实现文件上传功能,而无需关注底层的HTTP协议细节。这个组件提供了丰富的API,支持各种自定义选项,例如内存阈值、临时文件存储位置等,使得文件...

    commons-fileupload和smartupload实现文件上传

    在上述例子中,我们看到了使用Commons FileUpload实现文件上传的步骤: 1. 创建上传页面:HTML表单使用`enctype="multipart/form-data"`属性,指定上传文件的类型。在`&lt;input type="file"&gt;`标签中,用户可以选择要...

    基于apache commons.fileupload的文件上传组件,改进了上传速度

    本实现抽取了apache commons.fileupload的最基本代码,组合成一个简单的文件上传组件,对parseRequest方法进行了改进,对于文件,直接存储到指定的上传目录,加快了上传速度。使用本程序时,注意上传端的参数设置,...

    commons-fileupload 文件上传 图片上传 demo

    以上就是关于`commons-fileupload`文件上传库的简要介绍,以及如何使用它来实现图片上传功能。这个库极大地简化了Java Web应用程序中文件上传的复杂性,使得开发者可以专注于业务逻辑,而不是底层的文件处理细节。

    commons-fileupload文件上传实例代码

    本教程将深入讲解如何使用`commons-fileupload`库处理中文乱码问题以及实现多文件上传。 首先,`commons-fileupload`是Apache Commons项目的一个组件,专门用于处理HTTP请求中的多部分数据,即文件上传。它与...

    基于apache commons.fileupload的文件上传组件

    在创建一个基于Apache Commons FileUpload的文件上传组件时,通常会包含以下步骤: 1. 创建`DiskFileItemFactory`实例。 2. 使用工厂创建`ServletFileUpload`实例,设置大小限制。 3. 解析`HttpServletRequest`对象...

    commons fileupload用于文件上传

    在Java EE开发中,文件上传是一项常见的功能,Apache Commons FileUpload库正是为了处理这个需求而设计的。这个库提供了一套强大的API,使得在Servlet环境中处理文件上传变得简单且高效。下面将详细介绍Apache ...

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

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

    fileupload commons-io上传文件

    以上就是关于“fileupload commons-io上传文件”这一主题的详细说明,涵盖了Apache Commons IO和FileUpload库在文件上传中的应用,以及如何使用这两个库实现文件上传功能的基本步骤。在实际开发中,根据具体需求,还...

Global site tag (gtag.js) - Google Analytics