码迷,mamicode.com
首页 > Web开发 > 详细

若表单含有上传图片时

时间:2019-12-10 00:56:26      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:filename   substring   兴趣爱好   for   sys   multipart   post   tin   集合   

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

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

数据的接收:

// 定义一个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();
                    }
                
                }
            }

 

若表单含有上传图片时

标签:filename   substring   兴趣爱好   for   sys   multipart   post   tin   集合   

原文地址:https://www.cnblogs.com/shouyaya/p/12014165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!