• JavaWeb文件上传


             好久没碰Java了,今天要给项目添加一个文件上传功能,在网上搜了一下,用的最广泛的就是Apache的Commons FileUpload。大致看了一下官方提供的手册,用起来很简单。

      Commons FileUpload需要Commons IO包

        代码贴出来

     1 import java.io.File;
     2 import java.io.IOException;
     3 import java.util.List;
     4 
     5 import javax.servlet.ServletContext;
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 import org.apache.commons.fileupload.FileItem;
    12 import org.apache.commons.fileupload.FileItemFactory;
    13 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    14 import org.apache.commons.fileupload.servlet.ServletFileUpload;
    15 
    16 public class UploadServlet extends HttpServlet {
    17 
    18     private static final long serialVersionUID = 8982109274833629008L;
    19     private static String uploadDir = "/upload";// 上传文件的位置
    20 
    21     @SuppressWarnings("unchecked")
    22     @Override
    23     protected void service(HttpServletRequest request,
    24             HttpServletResponse response) throws ServletException, IOException {
    25         boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 是否是上传文件的action
    26         if (isMultipart) {
    27             // 为解析器提供解析式的缺省配置
    28             FileItemFactory factory = new DiskFileItemFactory();
    29             ServletContext context = this.getServletContext();
    30             String path = context.getRealPath(uploadDir);// 获取上传文件的物理目录
    31             // 创建一个解析器
    32             ServletFileUpload upload = new ServletFileUpload(factory);
    33             try {
    34                 List<FileItem> items = upload.parseRequest(request);
    35                 for (FileItem item : items) {
    36                     if (item.isFormField()) {// 如果是一个普通的表单域
    37                         String name = item.getString();
    38                         System.out.println(name);
    39                     } else {// 如果 type='file'
    40                         // 上传文件名
    41                         String fileName = item.getName();
    42                         path += File.separator + fileName;
    43                         System.out.println("上传文件名:" + path);
    44                         File uploadFile = new File(path);
    45                         item.write(uploadFile);//写如文件
    46                         System.out.println("上传成功");
    47                     }
    48                 }
    49             } catch (Exception e) {
    50             }
    51         }
    52     }
    53 
    54 }

    Commons FileUpload思想就是把  上传文件的表单(Form)封装成一个List<FileItem>,表单中每个表单项封装成FileItem。我们可以根据自己的需求处理一个个表单域。

    根据item.isFormField()来判断正常表单域和type='file'单位表单域。

  • 相关阅读:
    TrieTree的学习
    单调队列(monotonic queue)列与单调栈的学习
    507. Perfect Number
    157. Read N Characters Given Read4
    nsexec
    nsenter
    setjmp
    runc 测试
    cgo setns + libcontainer nsexec
    前端 导出为Excel 数据源为table表格 并且table中含有图片
  • 原文地址:https://www.cnblogs.com/ArtsCrafts/p/JavaWeb_Upload.html
Copyright © 2020-2023  润新知