1 2 3 4

团队开发day03

在商品信息提交的时候需要提交商品的图片,这一部门是之前没有接触过的,所以从网上学习各种相关资源。

但是找了很久,都没有找到相关的,直到找到如下的代码,如下代码是从前端传过来图片后,servlet进行的一系列操作

进行了很久的研究,终于看懂的差不多了。接下来就是实践图片存入数据库了。

public class Inertm extends HttpServlet {
    
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("方法开始执行");
        resp.setContentType("application/json;charset=utf-8");
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        String name=req.getParameter("user");
        // 验证请求是否满足要求(post 请求 / enctype 是否以multipart打头
                boolean isMultipart = ServletFileUpload.isMultipartContent(req);
                // 如果不满足要求就立即结束对该请求的处理
                if (!isMultipart) {
                    return;
                }
                try {
                    // FileItem 是表单中的每一个元素的封装
                    // 创建一个 FileItem 的工厂类
                    FileItemFactory factory = new DiskFileItemFactory();
                    // 创建一个文件上传处理器(装饰设计模式)
                    ServletFileUpload upload = new ServletFileUpload(factory);
                    // 解析请求
                    List<FileItem> items = upload.parseRequest(req);
                    System.out.println(items);

                    for (FileItem item : items) {
                        // 判断文件类型
                        if (item.isFormField()) {
                            // 文本类型
                            String filename = item.getFieldName();
                            if (filename.equals("user")) {
                                name = item.getString("UTF-8");
                                System.out.println(name);
                            }
                        } else {
                            // 文件类型    
                            // 获取文件后缀名
                            String imgtype = item.getName().substring(item.getName().lastIndexOf("."));
                            // 给文件重新命名防止重复
                            String imgName = UUID.randomUUID() + imgtype;
                            System.out.println();
                            String path="D:\\JAVA\\img";
                            // 将上传的文件保存到服务器
                            item.write(new File(path, imgName));

                            // 把服务器中的路径添加到数据库中
                            String sqlPath=null;
                            sqlPath = "upload/" + imgName;
                            System.out.println("访问路径:" + sqlPath);
                            // 将路径保存到数据库
                            User u=new User();
                            u.setName(name);
                            u.setImgurl(sqlPath);
                            Userdao dao=new Userdao();
                            boolean flag=dao.addUser(u);
                            if(flag){
                                resp.getWriter().write("ok");;
                            }else{
                                resp.getWriter().write("on");;

                            }
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

    }
}

 

posted @ 2021-05-04 20:14  小陈的太阳  阅读(25)  评论(0编辑  收藏  举报