jsp文件上传

文件上传

使用 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">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值