FileItemFactory fileItemFactory=new DiskFileItemFactory();
//2、创建ServletFileUpload对象
ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
//3、判断是否提交了文件上传的操作,也就是判断form中是否有multipart/form-data属性值
if(upload.isMultipartContent(request)){
//有,执行
//4、解析所有的请求对象,得到一个List<FileItem>集合
try {
List<FileItem> items = upload.parseRequest(request);
//5、循环集合操作
for (FileItem item : items) {
//6、判断是普通表单元素还是文件域
if(item.isFormField()){
//取得表单元素的value值,等价于request.getParameter();
//例,给User对象赋值
User user = new User();
if(item.getFieldName().equals("username")){
user.setUname(item.getString("utf-8"));
}
if(item.getFieldName().equals("password")){
user.setUpwd(item.getString("utf-8"));
}
}else{
//文件域
//7、操作文件(取值、设置、保存)
//取得文件名,用于保存文件
String fileName=item.getName();
//浏览器差异会导致fileName显示内容不一致,做统一化处理
//int index=fileName.lastIndexOf('\\');
//String newStr=fileName.substring(index+1);
//System.out.println(fileName);
//System.out.println(newStr);
fileName=fileName.substring(fileName.lastIndexOf('\\')+1);
//设置保存路径
String path=this.getServletConfig().getServletContext().getRealPath("/upload");
System.out.println(path);
//文件保存
File file = new File(path+"\\"+fileName);
item.write(file);
response.getWriter().print("<script>alert('文件上传成功')</script>");
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
//没有,提示
response.getWriter().print("<script>alert('表单设置有问题,请检查')</script>");
response.getWriter().print("<script>location.href='chp06part2/fileupload.jsp'</script>");
}