引入两个架包
commos-fileupload.jar
commons-fileupload.jar依赖于commons-io.jar

表单的提交方式必须为post
在表单中必须添加一个属性enctype="multipart/form-data"
提交到Servlet中就不能再用request.getparameter()来接受
判断前台表单中是否有multipart属性
通过parseRequest解析form中的所有请求字段,并保存到item集合中

用迭代器遍历整个item
在item中分为普通表单,和文件,两个有些不同
if (item.isFormField())判断是否为普通表单字段
使用String itemname = item.getFieldName();来获取表单中name值
使用item.getString("UTF-8");来获取表单中value
如果是文件:filename = item.getName();//获取文件名
文件的上传路劲String path  = request.getSession().getServletContext().getRealPath("image");
这个是当前项目的根目录中(也可以上传到别的文件中)
最后就是上传就可以了
File file = new File(path,filename);
item.write(file);//上传

 <form action="servlet1" method="post" enctype="multipart/form-data" >学号:<input type="text" name="username"><br>姓名:<input type="text" name="password"><br><input type="file" name="picture"><br> <input type="submit" value=" 提交"></form>
package servlet;import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;@WebServlet("/servlet1")
public class servlet1 extends HttpServlet {/*** */private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// response.sendRedirect("index.jsp");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html; charset=utf-8");// 上传try {boolean isMultipart = ServletFileUpload.isMultipartContent(request);if (isMultipart)// 判断前台的form是否有multipart属性{FileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);// 通过parseRequest解析form中的所有请求字段,并保存到item集合中List<FileItem> items;items = upload.parseRequest(request);Iterator<FileItem> iter = items.iterator();// 遍历items中的数据(no name picture)String filename = null;while(iter.hasNext())//通过迭代器遍历{FileItem item = iter.next();String itemname = item.getFieldName();//System.out.println(itemname);if (item.isFormField()) {//普通表单if(itemname.equals("username")){//根据name来获取System.out.println(itemname+" "+item.getString("UTF-8"));}else if(itemname.equals("password")) {System.out.println(itemname+" "+item.getString());}}else {//文件//获取文件名,getfilename获取普通表单字段的值filename = item.getName();//获取文件名System.out.println(itemname+" "+filename);//String path  = "C:\\apache-tomcat-9.0.29";String path  = request.getSession().getServletContext().getRealPath("image");File file = new File(path,filename);//新建一个文件,包含路劲和文件名//item.write(file);//上传}}System.out.println("上传成功");}else {System.out.print("文件上传失败");}} catch (FileUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}

使用form表单文件上传(enctype)相关推荐

  1. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  2. form表单文件上传

    form表单文件上传 form表单文件上传的ajax方法与文本上传有一些不一样 首先form表单的enctype属性写为**"multipart/form-data"** 默认是a ...

  3. vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)

    今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...

  4. 保姆级别SpringBoot接入又拍云实现表单文件上传手册

    一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...

  5. ajax 提交form表单,上传文件

    参考 :https://blog.csdn.net/gu_wen_jie/article/details/72177714 注意:使用layui 按钮提交表单时,按钮会默认提交表单.解决如下: $(' ...

  6. PHP 表单文件上传的原理,php上传文件的原理

    文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-data&q ...

  7. SpringBoot+Vue表单文件上传

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8281181 ...

  8. 表单+文件上传+音频+iframe

    一.表单及其标签 首先书写结构 <form action="表单提交地址" menthod="post get提交方式">  form只是外边框 & ...

  9. c语言表单文件上传,requests实现文件上传(对应postman form-data)

    requests实现文件上传(对应postman form-data) requests实现文件上传(对应postman form-data) postman发送post请求,有的情况需要发送form ...

最新文章

  1. Java面试经典题:线程池的成长之路
  2. n160ii打印机查看ip地址_喷墨打印机自动清洁打印头方法你知道几个?
  3. python vector变量_用Python实现因子分析
  4. java类似keyvaluepair_BM25 算法的java实现,有详细的说明文档和代码 Develop 238万源代码下载- www.pudn.com...
  5. 屏幕录制专家linux版,录屏大师免费版下载-录屏大师全新下载V3.5.3-Linux公社
  6. Oracle中对时间操作的一些总结
  7. Adobe Photoshop CS6软件安装教程
  8. 腾讯云域名转出转移码申请及转入阿里云全流程(图解)
  9. Numpy的终极备忘录
  10. 西班牙语笔记(内附如何练习弹舌)
  11. sefan ru java games_Java Pinyin.se4方法代码示例
  12. org.hibernate.QueryException: Unmatched braces for alias path 解决方案
  13. java中间件技术有哪些?
  14. MDK 5.25 J-link V9 烧写程序失败
  15. 2022年2月计划(osgearth源码调试+ue4视频+ogreMain源码抄写)
  16. python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇
  17. 将音频翻译成文字的软件叫什么?这几个软件值得你一试
  18. 微信小程序getWXACodeUnlimit接口调用和返回二进制流转换成图片保存到本地
  19. css中filter:alpha透明度总结
  20. 惠普HP8570W minipcie无线网卡接口改装m.2网卡ax200

热门文章

  1. 深入理解python--线程、进程与协程(1)
  2. 美通社企业新闻汇总 | 2019.2.28 | 软银愿景基金15亿美元投资车好多集团;凯悦携手如家创建合资公司...
  3. JPA Spring Data JPA详解
  4. python 内置函数 reversed()
  5. 2017年总结(补全)
  6. 【Qt入门第23篇】 数据库(三)利用QSqlQuery类执行SQL语句
  7. 音视频 SDP 添加码率
  8. ArcGIS基础学习:数据类型
  9. 长短期记忆网络LSTM
  10. QT实现ping功能