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

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">
  • 4
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现将图片地址上传到数据库并从数据库中获取地址进行显示,你可以按照以下步骤进行操作: 1. 创建数据库表,用于存储图片信息,表结构可以包含图片ID,图片名称,图片路径等字段。 2. 在前端页面中,使用表单上传图片,然后将图片保存服务器指定目录中,并获取到图片路径。 3. 在后端代码中,将图片路径保存数据库中,可以使用JDBC或者ORM框架进行数据库操作。 4. 在前端页面中,通过后端接口从数据库获取图片路径,然后将图片显示页面上。 以下是一个基于Spring MVC和MyBatis框架的示例代码,用于上传图片并将图片路径保存数据库中: 前端页面: ``` <form method="post" action="/upload" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form> ``` 后端Controller: ``` @Controller public class UploadController { @Autowired private ImageService imageService; @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { try { // 保存图片到服务器指定目录 String path = "D:/uploads/" + file.getOriginalFilename(); file.transferTo(new File(path)); // 将图片路径保存数据库 Image image = new Image(); image.setName(file.getOriginalFilename()); image.setPath(path); imageService.saveImage(image); } catch (IOException e) { e.printStackTrace(); } return "redirect:/"; } } ``` Service: ``` @Service public class ImageService { @Autowired private ImageMapper imageMapper; public void saveImage(Image image) { imageMapper.insert(image); } public Image getImageById(Long id) { return imageMapper.selectById(id); } } ``` Mapper: ``` @Mapper public interface ImageMapper { @Insert("insert into image (name, path) values (#{name}, #{path})") void insert(Image image); @Select("select * from image where id = #{id}") Image selectById(Long id); } ``` 最后,在前端页面中,通过后端接口获取图片路径,并将图片显示页面上: ``` <img src="/image?id=1" /> ``` Controller: ``` @Controller public class ImageController { @Autowired private ImageService imageService; @GetMapping("/image") public void getImage(@RequestParam("id") Long id, HttpServletResponse response) { Image image = imageService.getImageById(id); try { OutputStream out = response.getOutputStream(); FileInputStream in = new FileInputStream(new File(image.getPath())); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } in.close(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 这样就可以实现将图片地址上传到数据库并从数据库中获取地址进行显示了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值