使用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)
引入两个架包
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);}}