web项目中的文件上传之用户头像上传简单实现

前端页面上的操作

  1. 首先要在需要上传的from表单上添加 enctype=“multipart/form-data”,这个标明该from表单是分块提交的东东;而且提交方法必须是post,action是路径提交到那个servlet,方法名隐藏域是为了找servlet上的action=update的方法。

在这里插入图片描述

  1. 然后得有文件上传的框<input type="file" id="***" name="pic"/>,id值自定义,name也是自定义,这里是为了与后面对应。
    在这里插入图片描述

后台servlet上的操作

头像上传涉及用户信息修改,这里直接带上一起写了,下面注释很清楚,有上传的法子哦!另外注意servlet上要用@MultipartConfig注释
在这里插入图片描述
servlet代码如下:

//修改/更新个人信息
    protected void update(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, InvocationTargetException, IllegalAccessException {
        //判断用户是否登录超时
        Object loginUser = request.getSession().getAttribute("loginUser");
        if (loginUser == null){
            //用户被清空了
            request.setAttribute("msg","用户登录超时,请重新登录!");
            request.getRequestDispatcher("/msg.jsp").forward(request,response);
            return;
        }

        //获取用户信息,把用户信息封装
        User user = new User();
        BeanUtils.populate(user,request.getParameterMap());

        //文件上传
        //获取上传的文件
        Part picPart = request.getPart("pic");
        if (picPart != null){
            //不为空,获取文件名称
            String fileName = picPart.getSubmittedFileName();
            if (StringUtils.isBlank(fileName)) {
                //为了避免文件重名,给它重新命名
                fileName = UUIDUtils.getId() + "_" + fileName;
                //获取文件存放目录的真实路径
                String dirPath = this.getServletContext().getRealPath("/img");
                //保存文件
                picPart.write(dirPath + "/" + fileName);
                //设置用户pic属性
                user.setPic("img/" + fileName);
            }
        }

        //调用service的方法,进行更新
        userService.update(user);

        //查询出用户的最新信息,放入session中
        User existUser = userService.findById(user.getUid());
        request.getSession().setAttribute("loginUser",existUser);

        //重定向到home_index.jsp
        response.sendRedirect(request.getContextPath()+"/home_index.jsp");
    }
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值