一、使用工具:

(1)Firefox浏览器
(2)Eclipse

二、实现单文件上传

(1)Servlet 源码

package com.servlet;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;@WebServlet("/upload")
@MultipartConfig // 1.设置Servlet可以处理Multipart请求
public class UploadFileServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 2.获取文件保存的路径String savePath = this.getServletContext().getRealPath("Files");// 3.获取form表单的Multipart请求的文件的name属性Part part = request.getPart("photo");// 4.获取原文件名/** 经过过request请求信息的分析, 原文件名在头信息的Content-Disposition中 所以获取Content-Disposition的值如下* form-data; name="photo"; filename="测试文件.txt"*/String header = part.getHeader("Content-Disposition");int start = header.lastIndexOf("=");String fileName = header.substring(start + 1).replace("\"", "");// 5.保存到第二步获取的文件保存路径下if (fileName != null && !"".equals(fileName)) {part.write(savePath + "/" + fileName);}}}

这里需要注意的有三点:
  一是 @MultipartConfig 这个注解必须加上,不加不行;
  二是通过 getPart(Stirng name) 方法获取文件,其中 name 为jsp页面中的 input标签的name属性;
  三是为什么要这样获取文件名,这是因为 Servlet3.0 中的 Part 类没有获取上传文件名的方法,然后通过Firefox分析得出header中的 Content-Disposition 包含有文件名。下图
(2)JSP代码

<form action="${pageContext.request.contextPath }/upload" method="post"enctype="multipart/form-data"><input type="file" name="photo"><input type="submit" value="上传">
</form>

三、实现多文件上传

(1)Servlet 源码

package com.servlet;import java.io.IOException;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;@WebServlet("/upload")
@MultipartConfig // 1.设置Servlet可以处理Multipart请求
public class UploadFileServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 2.获取文件保存的路径String savePath = this.getServletContext().getRealPath("Files");// 3.获取form表单上传的多个文件List<Part> parts = (List<Part>) request.getParts();//4.循环遍历多个文件for(Part part : parts) {// 5.获取原文件名/** 经过过request请求信息的分析, 原文件名在头信息的Content-Disposition中 所以获取Content-Disposition的值如下* form-data; name="photo"; filename="测试文件.txt"*/String header = part.getHeader("Content-Disposition");int start = header.lastIndexOf("=");String fileName = header.substring(start + 1).replace("\"", "");// 6.保存到第二步获取的文件保存路径下if (fileName != null && !"".equals(fileName)) {part.write(savePath + "/" + fileName);}}}}

  要实现多文件上传只需要在单文件上传的的基础上改一下方法,通过 getParts() 方法获取多个文件,然后依次处理就好。
(2)JSP代码

<form action="${pageContext.request.contextPath }/upload" method="post"enctype="multipart/form-data"><input type="file" name="photo" multiple="multiple"><input type="submit" value="上传">
</form>

  注意:input 标签多了一个属性 multiple=“multiple”

四、总结

  要实现单文件上传只要使用方法 getPart(Stirng name),实现多文件上传需要在增加Jsp页面 input 标签的 multiple=“multiple”,将 getPart(Stirng name) 方法改为 getParts() 方法,同时遍历文件就可以了。

Java Servlet3.0使用getPart/getParts实现单文件和多文件上传相关推荐

  1. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法

    本文实例讲述了java实现分段读取文件并通过HTTP上传的方法.分享给大家供大家参考.具体如下: 1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http URL ...

  2. 可以在网上接单以及把自己作品上传到一些设计平台

    1.精通excel,word,PPT的可以去稻壳那样的平台上传自己的作品,我当时坚持了一个多月,赚了3000多块钱,后来持续都有收益,总共做个120个左右的PPT,赚了大概一万多. 2.会PS的,可以 ...

  3. java url 上传文件_Java使用HttpURLConnection上传文件(转)

    从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求.但是 ...

  4. java上传文件的要点_Uploadify上传文件方法

    Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示 ...

  5. 万能表单解析工具在xheditor上传文件中的应用

    利用JadePool中的万能表单解析工具cn.jadepool.web.ProcessForm可以轻松解析表单提交的全部信息,甚至可以轻松获取一个未知结构的表单由那些字段组成.以下是在xheditor ...

  6. jquery ajax java上传文件_jQuery Ajax方式上传文件的方法

    jQuery Ajax方式上传文件用到两个对象 第一个对象:FormData 第二个对象:XMLHttpRequest 目前新版的Firefox 与 Chrome 等支持HTML5的浏览器完美的支持这 ...

  7. java Socket Tcp示例三则(服务端处理数据、上传文件)

    示例一: package cn.itcast.net.p5.tcptest; import java.io.BufferedReader; import java.io.IOException; im ...

  8. java 图片分段上传_java 分段读取文件 并通过HTTP上传

    1.首先将文件分段,用RandomAccessFile 2.分段后将分出的内容上传到http 1.[代码][Java]代码 URL url = new URL(actionUrl); HttpURLC ...

  9. java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法

    本文介绍了JAVA通过HttpURLConnection 上传和下载文件的方法,分享给大家,具体如下: HttpURLConnection文件上传 HttpURLConnection采用模拟浏览器上传 ...

最新文章

  1. 详解「递归」正确的打开方式
  2. phoneGap异步加载JS失败
  3. SpringBoot的日志管理(输出级别,输出到文件)
  4. JZOJ 5379. 【NOIP2017提高A组模拟9.21】Victor爱数字
  5. 解决创建maven项目后,不能创建scala
  6. 区块链系列教程之:比特币的世界
  7. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合
  8. 机器学习pdf_2020年新书-《机器学习算法入门》免费pdf分享
  9. 垂直搜索引擎完整实现
  10. 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
  11. Linux中zip和tar处理软链接的差异与选择
  12. java中的执行顺序_Java中的执行顺序
  13. 软件逆向工具常用快捷键
  14. 2021全国电子设计大赛 D题 基于互联网的摄像测量系统 源码解析
  15. pycharm typo
  16. reentrantlock与synch区别优点
  17. 浅谈TEDS智能传感器
  18. 惠普ipaq蓝牙键盘配对码_将旧的Compaq Ipaq从Ubuntu 5.10 Breezy Badger升级到8.10 Intrepid Ibex...
  19. 2022年深圳市光明区防疫科技攻关支持项目申报操作指引
  20. MOOC战德臣数据库课程自用笔记_4_SQL概述与简单SQL语句

热门文章

  1. vr虚拟仿真教学系统应用场景开发
  2. nopi word to html,C# 基于NPOI+Office COM组件 实现20行代码在线预览文档(word,excel,pdf,txt,png)...
  3. php mysql 家谱_mysql家谱表查询某人所有后代
  4. [SOLVED]Manjaro内核更新后,Nvidia驱动无法链接的问题
  5. 面试官最爱提的问题TOP10来自:北京人才市场报
  6. U盘装系统启动时按F12没有反应的原因之一
  7. 作为一个才刚刚开始学习java的小白 居然显示码龄3年??每天吃饭点菜成为了一个难题 然后今天简单写了一个随机菜单
  8. nbu客户端卸载_在linux中卸载Netbackup
  9. Win7从文件服务器复制文件速度慢问题处理
  10. matlab实验学习心得,matlab实验心得体会-学习matlab的心得体会