zoukankan      html  css  js  c++  java
  • servlet 通过 FileItem 实现多文件上传

    【本文简介】

    一个servlet 多文件上传的简单例子。

    【依赖包】

    1. commons-fileupload-1.3.1.jar
    2. commons-io-2.2.jar

    【依赖包下载】

    1. commons-fileupload-1.3.1.jar:http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi
    2. commons-io-2.2.jar:http://commons.apache.org/proper/commons-io/download_io.cgi

    【文件夹结构】

    【HTML表单】

    1   <body>
    2     <form action="UploadServlet" method="post" enctype="multipart/form-data">
    3         <input name="file" type="file" />
    4         <input name="file" type="file" />
    5         <input type="submit" value="上传"/>
    6     </form>
    7   </body>

    【java代码】

     1 package com.zjm.www.servlet;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.io.PrintWriter;
     6 import java.util.Iterator;
     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.FileItem;
    14 import org.apache.commons.fileupload.FileItemFactory;
    15 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    16 import org.apache.commons.fileupload.servlet.ServletFileUpload;
    17  
    18 /**
    19   * @描述 servlet 通过 FileItem 实现多文件上传
    20   * @作者   小M
    21   * @博客 http://www.cnblogs.com/xiaoMzjm/
    22   * @时间 2014/07/30
    23   */
    24 public class UploadServlet extends HttpServlet {
    25  
    26     private static final long serialVersionUID = 1L;
    27  
    28     public void doGet(HttpServletRequest request, HttpServletResponse response)
    29             throws ServletException, IOException {
    30         doPost(request, response);
    31     }
    32  
    33     @SuppressWarnings("unchecked")
    34     public void doPost(HttpServletRequest request, HttpServletResponse response)
    35             throws ServletException, IOException {
    36          
    37         // 转码,建议使用过滤器转码
    38         request.setCharacterEncoding("utf-8");
    39         response.setCharacterEncoding("utf-8");
    40         response.setContentType("text/html;charset=utf-8");
    41  
    42         // 判断提交过来的表单是否为文件上传菜单,只适用于servlet
    43         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    44          
    45         if (isMultipart) {
    46             // 构造一个文件上传处理对象
    47             FileItemFactory factory = new DiskFileItemFactory();
    48             ServletFileUpload upload = new ServletFileUpload(factory);
    49  
    50             Iterator<FileItem> items;
    51              
    52             try {
    53                 // 解析表单中提交的所有文件内容
    54                 items = upload.parseRequest(request).iterator();
    55                  
    56                 while (items.hasNext()) {
    57                      
    58                     FileItem item = (FileItem) items.next();
    59                      
    60                     if (!item.isFormField()) {
    61                          
    62                         // 取出上传文件的文件名称
    63                         String name = item.getName();
    64                         
    65                         // 取得上传文件以后的存储路径 
    66                         String fileName = name.substring(
    67                                 name.lastIndexOf('\') + 1, name.length());
    68                         
    69                         // 上传文件以后的存储路径 , 有关路径问题,请参考另一篇博文:http://www.cnblogs.com/xiaoMzjm/p/3878758.html
    70                         String path = request.getServletContext().getRealPath("/")+"\UpLoadFile"
    71                                 + File.separatorChar + fileName;
    72  
    73                         // 上传文件
    74                         File uploaderFile = new File(path);
    75                         item.write(uploaderFile);
    76                          
    77                         // 打印上传成功信息
    78                         PrintWriter out = response.getWriter();
    79                         out.print("success");
    80                     }
    81                 }
    82             } catch (Exception e) {
    83                 e.printStackTrace();
    84             }
    85         }
    86     }
    87 }
  • 相关阅读:
    jMeter 里 CSV Data Set Config Sharing Mode 的含义详解
    如何使用 jMeter Parallel Controller
    使用 Chrome 开发者工具 coverage 功能分析 web 应用的渲染阻止资源的执行分布情况
    使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
    关于 SAP 电商云首页加载时触发的 OCC API 请求
    SAP UI5 确保控件 id 全局唯一的实现方法
    SAP 电商云 Accelerator 和 Spartacus UI 的工作机制差异
    介绍一个好用的能让网页变成黑色背景的护眼 Chrome 扩展应用
    Chrome 开发者工具 performance 标签页的用法
    Client Side Cache 和 Server Side Cache 的区别
  • 原文地址:https://www.cnblogs.com/xiaoMzjm/p/3879018.html
Copyright © 2011-2022 走看看