<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/registerServlet2"
method="post" enctype="multipart/form-data">
姓名:<input type="text" name="name"/>
年龄:<input type="text" name="age"/>
照片:<input type="file" name="photo"/>
<input type="submit" value="注册"/>
</form>
</body>
</html>
@WebServlet("/registerServlet2")
public class RegisterServlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//判断请求是否为Multipart请求
if(!ServletFileUpload.isMultipartContent(request)){
throw new RuntimeException("当前情请求不支持上传请求");
}
try {
//创建一个FileItem工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建文件上传核心组件
ServletFileUpload upload = new ServletFileUpload(factory);
//解析请求,获取到所有的item
List<FileItem> items = upload.parseRequest(request);
//遍历items
for(FileItem item:items){
if(item.isFormField()){
//获取表单项名称
String fileName = item.getFieldName();
//获取表单项的值
String fileValue = item.getString();
System.out.println(fileName+":"+fileValue);
}else{
//获取上传文件原始名称
String fileName = item.getName();
//创建文件输入流
InputStream inputStream = item.getInputStream();
//获取文件保存在服务器的路径
String path = this.getServletContext().getRealPath("/images");
//创建目标文件,将用于保存上传文件
File decFile = new File(path,fileName);
//创建文件输出流
FileOutputStream fileOutputStream = new FileOutputStream(decFile);
//将输入流中的数据写入到输出流中
int len = -1;
byte[] buf = new byte[1024];
while((len= inputStream.read(buf))!=-1){
fileOutputStream.write(buf,0,len);
}
inputStream.close();
fileOutputStream.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}