使用form表单文件上传(enctype)
引入两个架包
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)相关推荐
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- form表单文件上传
form表单文件上传 form表单文件上传的ajax方法与文本上传有一些不一样 首先form表单的enctype属性写为**"multipart/form-data"** 默认是a ...
- vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...
- 保姆级别SpringBoot接入又拍云实现表单文件上传手册
一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...
- ajax 提交form表单,上传文件
参考 :https://blog.csdn.net/gu_wen_jie/article/details/72177714 注意:使用layui 按钮提交表单时,按钮会默认提交表单.解决如下: $(' ...
- PHP 表单文件上传的原理,php上传文件的原理
文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-data&q ...
- SpringBoot+Vue表单文件上传
版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8281181 ...
- 表单+文件上传+音频+iframe
一.表单及其标签 首先书写结构 <form action="表单提交地址" menthod="post get提交方式"> form只是外边框 & ...
- c语言表单文件上传,requests实现文件上传(对应postman form-data)
requests实现文件上传(对应postman form-data) requests实现文件上传(对应postman form-data) postman发送post请求,有的情况需要发送form ...
最新文章
- Java面试经典题:线程池的成长之路
- n160ii打印机查看ip地址_喷墨打印机自动清洁打印头方法你知道几个?
- python vector变量_用Python实现因子分析
- java类似keyvaluepair_BM25 算法的java实现,有详细的说明文档和代码 Develop 238万源代码下载- www.pudn.com...
- 屏幕录制专家linux版,录屏大师免费版下载-录屏大师全新下载V3.5.3-Linux公社
- Oracle中对时间操作的一些总结
- Adobe Photoshop CS6软件安装教程
- 腾讯云域名转出转移码申请及转入阿里云全流程(图解)
- Numpy的终极备忘录
- 西班牙语笔记(内附如何练习弹舌)
- sefan ru java games_Java Pinyin.se4方法代码示例
- org.hibernate.QueryException: Unmatched braces for alias path 解决方案
- java中间件技术有哪些?
- MDK 5.25 J-link V9 烧写程序失败
- 2022年2月计划(osgearth源码调试+ue4视频+ogreMain源码抄写)
- python的staticmethod,classmethod和装饰器以及闭包的爱恨情仇
- 将音频翻译成文字的软件叫什么?这几个软件值得你一试
- 微信小程序getWXACodeUnlimit接口调用和返回二进制流转换成图片保存到本地
- css中filter:alpha透明度总结
- 惠普HP8570W minipcie无线网卡接口改装m.2网卡ax200