zoukankan      html  css  js  c++  java
  • 团队开发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();
                    }
    
        }
    }
  • 相关阅读:
    Redis分布式缓存系列(六)- Redis中的List类型
    Redis分布式缓存系列(五)- Redis中的ZSet类型
    Redis分布式缓存系列(四)- Redis中的Set类型
    Redis分布式缓存系列(三)- Redis中的Hash类型
    Redis分布式缓存系列(二)- Redis中的String类型以及使用Redis解决订单秒杀超卖问题
    Redis分布式缓存系列(一)- Redis客户端及服务端的安装
    .NET中常用的数据结构
    面向对象23种设计模式系列(四)- 迭代器模式
    .NET中的本地缓存(数据分拆+lock锁)
    .NET中的GC垃圾回收
  • 原文地址:https://www.cnblogs.com/cdl-sunshine/p/14904785.html
Copyright © 2011-2022 走看看