<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'uploat.jsp' starting page</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/servlet/UploadServlet3" enctype="multipart/form-data" method="post">
上传用户:<input type="text" name="username"><br/>
上传文件:<input type="file" name="file1"><br/>
上传文件:<input type="file" name="file2"><br/>
<input type="submit" value="上传">
</form>
</body>
</html>
UploadServlet2.java
package cn.xwy.web.servlet;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet2 extends HttpServlet {
//处理上传数据
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(item.isFormField()){
//为普通输入项
String inputName = item.getFieldName();
String inputValue = item.getString();
System.out.println(inputName + "=" + inputValue);
}else{
//代表当前出来的item里面分装的是上传文件
String filename = item.getName().substring(item.getName().lastIndexOf("\\")+1);
InputStream in = item.getInputStream();
int len = 0;
byte buffer[] = new byte[1024];
FileOutputStream out = new FileOutputStream("d:\\" + filename);
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
}
}catch(Exception e){
throw new RuntimeException(e);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
//创建解析工厂
//创建解析器
//调用解析器解析request,得到保存了所有上传数据的list
//迭代list集合,拿到分装了每个输入项filename
//判断item的类型,如果是普通字段,则直接获取数据,如果为上传文件,则调用留获取数据写到本地硬盘