首先from里面必须有红色字体里面的属性
<form action="/web/ManageServlet" method="post" enctype="multipart/form-data">
首先把fileupload的开源项目下名叫commons-fileupload的jar文件导入到WEB-INF的lib目录下
这个开源项目本身使用了另一个开源项目——commons-io,也把这个jar文件导入到相同的目录下
下面是在servlet里面的处理代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//首先对请求进行判断是否为Multipart
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart){
try{
//创建一个FileItemFactory用来指定上传的文件保存到磁盘
FileItemFactory factory = new DiskFileItemFactory();
//处理Multipart上传的文件
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
//解析请求对象
List<FileItem> items = upload.parseRequest(request);
//取得目录在硬盘下的绝对路径
String dir = request.getSession().getServletContext().getRealPath("/files");
//判断文件目录是否存在
File dirFile = new File(dir);
if(!dirFile.exists()) dirFile.mkdirs();
//取得每一个请求参数
for(FileItem item : items){
//判断是文本还是文件
if(item.isFormField()) {
//如果文本类型参数,取得参数名称和参数值
String name = item.getFieldName();
String value = item.getString("UTF-8");
System.out.println(name+ "="+ value);
}else{
//如果文件类型参数,保存文件到路径下
File saveFile = new File(dirFile,"haha");
item.write(saveFile);
}
}
}catch (Exception e) {
e.printStackTrace();
}
}else{
doGet(request, response);
}
}