JavaWeb上传图片到服务器,存储到数据库,并在页面显示

Servlet
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");
        boolean isMultipart = ServletFileUpload.isMultipartContent(req);
        //上传到服务器的存放路径
        String uploadFilePath = req.getSession().getServletContext().getRealPath("upload/");

        //判断上传的数据是不是多段数据
        if (isMultipart) {
            //创建工厂实现类
            DiskFileItemFactory factory = new DiskFileItemFactory();
            //创建临时文件目录
            File tempPath = new File("E://abc");
            //设置临时文件存放的路径
            factory.setRepository(tempPath);
            //设置缓冲区大小
            factory.setSizeThreshold(10240);
            //用于解析上传数据的工具类ServletFileUpload
            ServletFileUpload upload = new ServletFileUpload(factory);
            //设置单个文件最大值
            upload.setSizeMax(61440000);

            //初始化为空
            String username = null;
            String phone = null;
            String sex = null;
            String name = null;
            String place = null;
            String hometown = null;
            String headimgpath = null;
            //调用解析方法
            try {
                //定义一个集合 接受上传的所有请求参数
                List<FileItem> list = upload.parseRequest(req);
                //循环判断,每一个表单项,是普通类型,还是上传的文件
                for (FileItem fileItem : list) {
                    if (fileItem.isFormField()) {
                        //普通表单项
                        String filedName = fileItem.getFieldName();
                        if (filedName.equals("username")) {
                            username = fileItem.getString("UTF-8");
                        } else if (filedName.equals("phone")) {
                            phone = fileItem.getString("UTF-8");
                        } else if (filedName.equals("truename")) {
                            name = fileItem.getString("UTF-8");
                        } else if (filedName.equals("sex")) {
                            sex = fileItem.getString("UTF-8");
                        } else if (filedName.equals("place")) {
                            place = fileItem.getString("UTF-8");
                        } else if (filedName.equals("hometown")) {
                            hometown = fileItem.getString("UTF-8");
                        }

                    } else {
                        //上传的图片,获取到文件名
                        headimgpath = fileItem.getName();
                        if (headimgpath != null && !headimgpath.equals("")) {
                            String str = headimgpath.substring(headimgpath.lastIndexOf(".") + 1);
                            //判断图片类型
                            if ("png".equals(str) || "jpg".equals(str)) {
                                //保存到服务器
                                File saveFile = new File(uploadFilePath, headimgpath);
                                fileItem.write(saveFile);
                                out.println("图片上传成功");
                            } else {
                                return;
                            }

                        }

                    }
                }
            } catch (Exception e) {

                e.printStackTrace();
            }

            //拿到LoginServlet中保存到session中的已经登录的user
            User user = (User) req.getSession().getAttribute("user");
            //创建UserInfo对象
            UserInfo userInfo = new UserInfo(null, username, phone, name, sex, place, hometown, headimgpath);
            // 调用 userService的方法处理业务

            boolean flag = userService.UpdateUserInfo(userInfo, user);
            if(flag){
                //req.setAttribute("AddSuccess","success");
                req.getRequestDispatcher("QueryStoreTypeShowServlet").forward(req,resp);
            }else{
               // req.setAttribute("AddError","error");
                req.getRequestDispatcher("updateinfo.jsp").forward(req,resp);
            }

        }
    }
将图片路径存放到数据库

serviceImpl:

  @Override
    public boolean UpdateUserInfo(UserInfo userinfo, User user) {
        return userDao.UpdateUserInfo(userinfo,user);
    }

service层:

 /**
     * 修改个人信息
     */
    public boolean UpdateUserInfo(UserInfo userinfo, User user);

dao层:

  /**
     * 修改账户个人信息
     */
    public boolean UpdateUserInfo(UserInfo userinfo,User user);

daoImpl:

    @Override
    public boolean UpdateUserInfo(UserInfo userinfo,User user) {
        QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource());
        String sql = "update userinfo set username=?,phone=?,name=?,sex=?,place=?,hometown=?,headimgpath=? where usernum =(select userid from t_user where email=?)";

        Object[] objects = {
                userinfo.getUsername(),userinfo.getPhone(),userinfo.getName(),userinfo.getSex(),userinfo.getPlace(),userinfo.getHometown(),userinfo.getHeadimgpath(),
                user.getEmail()
        };
        try {
            int count = runner.update(sql,objects);
            if(count>0){
                return true;
            }else{
                return false;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
前端显示头像
<span class="item_name" style="width:120px;">头 像</span>

<img src="upload/${requestScope.userInfo.headimgpath}"width="60" height="60" name="headimg">
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐