文件上传
使用 Servlet 来处理文件上传,使用到的文件有:
doupload.jsp:文件上传表单
mian.jsp:文件上传成功后跳入的页面
UploadServlet : 上传处理 Servlet。
需要引入的 jar 文件:commons-fileupload-1.2.1.jar、commons-io.jar
代码演示:
页面部分:
<!-- 提供表单 -->
<form action="Upload" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="uname">
头像:<input type="file" name="tou" accept=".jpg,.png,.gif">
<input type="submit" name="sub" value="提交">
表单 method 属性应该设置为 POST 方法,不能使用 GET 方法。表单 enctype 属性应该设置为 multipart/form-data.
servlet部分:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建session
HttpSession session = request.getSession();
//创建一个变量:上传是否成功
boolean flag=false;
//获取表单的enctype是否赋值正确
boolean res=ServletFileUpload.isMultipartContent(request);
//获取img文件夹的绝对路径
String path=session.getServletContext().getRealPath("img/");
System.out.println(path);
//进行判断
if (res) {
System.out.println("表单编码格式正确");
//创建工厂
FileItemFactory fa=new DiskFileItemFactory();
//借助工厂创建组件的核心对象
ServletFileUpload sfu=new ServletFileUpload(fa);
try {
//将用户提交的表单数据打包带回来
List<FileItem> list = sfu.parseRequest(request);
//创建迭代器
Iterator<FileItem> it = list.iterator();
//遍历集合
while(it.hasNext()){
//获取此次遍历的fileitem对象
FileItem item=it.next();
//判断当前表单元素是文件表单还是普通表单
if (item.isFormField()) {
System.out.println("普通表单");
//获取表单元素的name属性
String name = item.getFieldName();
//判断
if(name.equals("uname")){
//将用户名存入session
session.setAttribute("xm", item.getString("utf-8"));
}
} else {
System.out.println("文件表单");
//获取用户上传的附件的名字
String name = item.getName();
System.out.println(name);
//创建file对象
File file=new File(path,name);
try {
//写出去
item.write(file);
//保存文件名称
session.setAttribute("tou", name);
//修改flag的值
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
} else {
System.out.println("表单编码格式错误");
}
//进行判定
if(flag){
//成功进入main
response.sendRedirect("main.jsp");
}else{
//失败进入index
response.sendRedirect("index.jsp");
}
}
}
文件上传一般都是固定的代码,每一句话注释都写的比较详细
mian页面:
用户名${xm }<br/>
头像:<img alt="" src="img/${tou }" width="200px" height="200px">