zoukankan      html  css  js  c++  java
  • 若表单含有上传除字符类型的数据(图片、word……)时

    需改变form中的enctype="multipart/form-data"和提交方式必须为"post"

    <form action="/reg_login/RegistServlet" method="post" enctype="multipart/form-data">

    可与poi解析jar包配合使用,使上传的数据可以被解析

    使用方法可参考:https://www.cnblogs.com/shouyaya/p/12088864.html

    数据的接收:

    // 定义一个Map集合用于保存接收到的数据:
                Map<String,String> map = new HashMap<String,String>();
                // 1.创建一个磁盘文件项工厂对象
                DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
                // 2.创建一个核心解析类
                ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
                // 3.解析request请求,返回的是List集合,List集合中存放的是FileItem对象
                List<FileItem> list = servletFileUpload.parseRequest(request);
                // 定义一个List集合,用于保存兴趣爱好数据:
                List<String> hobbyList = new ArrayList<String>();
                // 4.遍历集合,获得每个FileItem,判断是表单项还是文件上传项
                String url = null;
                for (FileItem fileItem : list) {
                    // 判断是表单项还是文件上传项
                    if(fileItem.isFormField()){
                        // 普通表单项:
                        // 接收表单项参数的值:
                        String name = fileItem.getFieldName(); // 获得表单项的name属性的值
                        String value = fileItem.getString("UTF-8");// 获得表单项的值
                        System.out.println(name+"    "+value);
                        // 接收复选框的数据
                        if("hobby".equals(name)){
                            String hobbyValue = fileItem.getString("UTF-8");
                            // 接收到一个值,将这个值存入到hobbyList集合中
                            hobbyList.add(hobbyValue);
                            hobbyValue = hobbyList.toString().substring(1, hobbyList.toString().length()-1); // xxx,yyy
                            System.out.println(name+"     "+hobbyValue);
                            // 将爱好的数据存入到Map集合中:
                            map.put(name, hobbyValue);
                        }else{
                            // 将数据存入到map集合中:
                            map.put(name, value);
                        }
                    }else{
                        // 文件上传项:
                        // 文件上传功能:
                        // 获得文件上传的名称:
                        String fileName = fileItem.getName();
                        if(fileName !=null && !"".equals(fileName)){
                            // 通过工具类获得唯一文件名:
                            String uuidFileName = UploadUtils.getUUIDFileName(fileName);
                            // 获得文件上传的数据:
                            InputStream is = fileItem.getInputStream();
                            // 获得文件上传的路径:
                            String path = this.getServletContext().getRealPath("/upload");
                            // 将输入流对接到输出流就可以了:
                            url = path+"\"+uuidFileName;
                            OutputStream os = new FileOutputStream(url);
                            int len = 0;
                            byte[] b = new byte[1024];
                            while((len = is.read(b))!=-1){
                                os.write(b, 0, len);
                            }
                            is.close();
                            os.close();
                        }
                    
                    }
                }
  • 相关阅读:
    【SSH网上商城项目实战11】查询和删除商品功能的实现
    【SSH网上商城项目实战10】商品类基本模块的搭建
    【SSH网上商城项目实战09】添加和更新商品类别功能的实现
    【SSH网上商城项目实战08】查询和删除商品类别功能的实现
    【SSH网上商城项目实战07】Struts2和Json的整合
    【SSH网上商城项目实战06】基于DataGrid的数据显示
    thinkphp模版主题使用方法
    sql语句中#{}和${}的区别
    SQL语句中有关单引号、双引号和加号的问题
    LEFT JOIN 关键字语法
  • 原文地址:https://www.cnblogs.com/shouyaya/p/12014165.html
Copyright © 2011-2022 走看看