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 }

servlet 通过 FileItem 实现多文件上传,布布扣,bubuko.com

时间: 2024-10-14 21:51:55

servlet 通过 FileItem 实现多文件上传的相关文章

基于JSP+Servlet+JavaBean的图片或文件上传

基于JSP+Servlet+JavaBean的图片或文件上传 一.概述 现在不管是博客论坛还是企业办公,都离不开资源的共享.通过文件上传的方式,与大家同分享,从而达到大众间广泛的沟通和交流,我们既可以从中获得更多的知识和经验,也能通过他人的反馈达到自我改进和提升的目的. 下面我就为大家介绍 web项目中的这一上传功能,那么文件是如何从本地发送到服务器的呢?大家可以在在线视频课程进修学习<基于JSP+Servlet+JavaBean的人力资源管理系统开发>中第22课-项目开发-其它功能完善-图片

Servlet中使用getInputStream进行文件上传

据说古老了点,所以代码比较繁琐,主要用于处理文件的地方太多. 下节用SERVLET3.0的Part进行操作一下. form.html: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html ;charset=UTF-8"> </head> <body> <form method=&q

android批量文件上传(android批量图片上传)

项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功: 1.android客户端+springMVC服务端:服务端采用org.springframework.web.multipart.MultipartHttpServletRequest作为批量上传接收类,这种搭配下的批量文件上传会失败,最终服务端只会接受到一个文件,即只会接受到第一个文件.可能因为MultipartHttpServletRequest对serv

20160420javaweb之文件上传和下载

一.文件上传 1.提供表单允许用户通过表单选择文件进行上传 表单必须是POST提交 文件输入框必须有name属性,只有有name属性的输入项浏览器才会进行提交 需要设置enctype属性值为multipart/form-data POST /Day15/upload.jsp HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Referer: http://localhost/Day15/upload.jsp Accept-Languag

ajax文件上传进度条

写在前面: 思路:首先将表单提交servlet,servlet中做文件上传处理,上传的参数封装成对象存入session中,提交到的页面为隐藏的iframe窗口.然后使用ajax异步请求获取session中的对象,并将对象转换成json对象输出出来.当对象状态为上传完成或操作异常时将session中对应的属性清除掉.异步操作的回调函数可以使用var jinduStatus = eval("("+xmlHttp.responseText+")") 的方法将json转换为

黑马day15 文件上传&amp;amp;apche的工具包

1.肯定要导入apche的jar包 2.要使用的类的介绍.. 2.1DiskFileItemFactory public DiskFileItemFactory(int sizeThreshold, java.io.File repository) public DiskFileItemFactory() public void setSizeThreshold(int sizeThreshold) --用来设定内存缓冲区的大小,默认是10k public void setRepository(

springMVC之单文件上传

springmvc对form表单的支持已经很成熟,仅仅两步: 配置支持文件上传的bean:org.springframework.web.multipart.commons.CommonsMultipartResolver  同时设置文件编码.单次提交表单上传文件最大字节数.以及写文件时使用的缓冲区大小 开发处理:handler[org.hy.ssm.web.controller.FormController.uploadOne(MultipartFile)]  Java代码   /** * @

JavaWeb总结(十)&mdash;文件上传和下载

一.文件的上传     1.文件的基本上传      对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的.common- fileupl

JavaEE系列之(二)commons-fileupload实现文件上传、下载

一.文件上传概述 实现Web开发中的文件上传功能,需要两步操作: 1.在Web页面中添加上传输入项 <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="filename1"/><br> <input type="file" n