【本文简介】

一个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 实现多文件上传的更多相关文章

  1. 2020最新Servlet+form表单实现文件上传(图片)

    servlet实现文件上传接受 这几天学了一点文件上传,有很多不会,在网查了许多博客,但是最新的没有,都比较久了 因为我是小白,版本更新了,以前的方法自己费了好久才弄懂,写个随笔方便以后查找 代码奉上 ...

  2. Servlet中使用getInputStream进行文件上传

    据说古老了点,所以代码比较繁琐,主要用于处理文件的地方太多. 下节用SERVLET3.0的Part进行操作一下. form.html: <!DOCTYPE html> <html&g ...

  3. 与文件上传到的三个类:FileItem类、ServletFileUpload 类、DiskFileItemFactory类

    文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...

  4. 文件上传: FileItem类、ServletFileUpload 类、DiskFileItemFactory类

    文件上传: ServletFileUpload负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中, 在使用ServletFileUpload对象解析请求时需要根据DiskFi ...

  5. java commons-fileupload servlet 多文件上传

    commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...

  6. Java Servlet异步处理、非阻塞I/O和文件上传

    异步处理 应用服务器中的 web容器通常对各个客户端情求分别使用一个服务器线程.在工作负载很繁重的情况下,容器常要大量线程来为所有客户端请求服务.可扩展性限制包括内存用尽,或容器线程池耗尽.为了创建可 ...

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

    一.文件上传概述     实现Web开发中的文件上传功能,需要两步操作:     1.在Web页面中添加上传输入项 <form action="#" method=" ...

  8. 20160420javaweb之文件上传和下载

    一.文件上传 1.提供表单允许用户通过表单选择文件进行上传 表单必须是POST提交 文件输入框必须有name属性,只有有name属性的输入项浏览器才会进行提交 需要设置enctype属性值为multi ...

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

    项目中多处用到文件批量上传功能,今天正好解决了此问题,在此写出来,以便日后借鉴. 首先,以下架构下的批量文件上传可能会失败或者不会成功:   1.android客户端+springMVC服务端:服务端 ...

随机推荐

  1. 李洪强和你一起学习前端之(3)Css基础和选择器

    大家好! 经过了前面的学习,是不是对前端的学习有了初步的了解.虽然我之前有iOS开发的经验,现在接触一门新的语言,对我来说 有一定的优势,但是一门技术对于谁来说都是公平的,我承认,我在接触新知识的时候 ...

  2. jquery 操作input radio 单选框

    1.jquery选中单选框 2.jquery 取消单选框 3.判断是否选中 4.设置不可编辑

  3. PHP——smarty模板(第二天)

    Test.php <?php //加载初始化文件 require "init.inc.php"; $smarty->assign("data",ar ...

  4. 修改net基本三层 动软生产

    控制层(dal) 模型层-实体类(Model) 显示层-web

  5. Apollo 刨析:简介

      Apollo是配置在IIS服务器上的一个Web站点,它使用了.NET4.0和ASP.Net的技术. 代码是C#编写的.是基于ASP.NET MVC3的Web开发框架上编写的一个应用. 它使用到了N ...

  6. mac 干掉Dashboard

    打开终端,输入下面的命令: defaults write com.apple.dashboard mcx-disabled -boolean YES   然后再重启一下 Dock,在终端输入 kill ...

  7. (1)、hive框架搭建和架构简介

    一.简介 Hive是基于hadoop的一个数据仓库工具,有助于查询和管理分布式存储系统中的数据集,非常适合数据仓库的统计分析 Hive 不适合用于连机事物处理.也不提供实时查询,比较适合在大量不可变数 ...

  8. WPF界面框架的设计

    http://www.cnblogs.com/baihmpgy/p/osgi_muinavtree_fx.html

  9. iOS开发之--storyboary下,拖拽一个tableview/collectionView/view 等,顶端下沉64个像素的处理方法

    大家可能会发现,在sb或者xib里面拖拽一个tableview/collectionview/view的,顶端会自动下沉64个像素,也就是说,运行在模拟器上去,自导航下面又自动下沉了64个像素, 那是 ...

  10. iOS App 审核被拒的原因搜罗

    本文转载至 http://ju.outofmemory.cn/entry/108500   iOS app 审核 1.程序有重大bug,程序不能启动,或者中途退出. 2.绕过苹果的付费渠道,我们之前游 ...