热门IT资讯网

java文本和图片怎么实现同时提交表单?

发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,java文本和图片怎么实现同时提交表单?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。首先来看如下效果图片:表单代码: 宠物(或产品)类型:

java文本和图片怎么实现同时提交表单?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。

首先来看如下效果图片:

表单代码:

宠物(或产品)类型:

宠物(或产品)名字:

一句话介绍:

题目:

价钱:

库存:

状态:

头像设置:
Image preview
详细描述(编辑完需要在文本框右上角点保存):

商品详细描述

编辑完需要在文本框右上角点保存



提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到commons的四个包,使用Maven导入,如下:

           commons-io      commons-io      2.4                  commons-fileupload      commons-fileupload      1.3.3                  commons-collections      commons-collections      3.1                  commons-beanutils      commons-beanutils      1.9.2    

Java代码如下:

主要判断每一个参数的属性,图片的则进行图片处理,文本则进行文本处理。

//新增产品        @RequestMapping("/addPro")        public void addPro(HttpServletRequest request, HttpServletResponse response) throws IOException {                //编码规范                response.setContentType("text/html");//              response.setCharacterEncoding("utf-8");                Product product = new Product();                 //这种方法主要通过if (item.isFormField())这个条件判别文件还是非文件                DiskFileItemFactory factory = new DiskFileItemFactory();                ServletFileUpload upload = new ServletFileUpload(factory);                List items = null;                try {                        items = upload.parseRequest(request);                } catch (FileUploadException e) {                        e.printStackTrace();                } // 解析request请求                Iterator iter = items.iterator();// 遍历表单中提交过来的内容                while (iter.hasNext()) {                        FileItem item = (FileItem) iter.next();                        if (item.isFormField()) { // 如果是表单域 ,就是非文件上传元素                                String value = item.getString("UTF-8"); // 获取value属性的值,这里需要指明UTF-8格式,否则出现中文乱码问题                                if (item.getFieldName().equals("cid")) {// 对应form中属性的名字                                        int categoryId = Integer.parseInt(value);                                        product.setCategory_id(categoryId);                                } else if (item.getFieldName().equals("cname")) {                                        product.setName(value);                                }else if (item.getFieldName().equals("introduction")) {                                        product.setIntroduction(value);                                }else if (item.getFieldName().equals("title")) {                                        product.setTitle(value);                                }else if (item.getFieldName().equals("price")) {                                        BigDecimal price=new BigDecimal(value);                                        product.setPrice(price);                                }else if (item.getFieldName().equals("stock")) {                                        product.setStock(Integer.parseInt(value));                                }else if (item.getFieldName().equals("status")) {                                        product.setStatus(Integer.parseInt(value));                                }else if (item.getFieldName().equals("details")) {                                        product.setDetail(value);                                }                        }else {                                String filename = item.getName(); // 文件的名字                                 String imgname = filename.substring(0, filename.indexOf("."));  //减去"."后面的字符                                 //tomcat启动位置//                              String t1 = System.getProperty("user.dir").substring(0,//                                              System.getProperty("user.dir").length() - 4);                                 String path = request.getServletContext().getRealPath("img"); //target找到img位置                                Long time = Calendar.getInstance().getTimeInMillis();  //时间戳,保证文件命名不重复                                String imgurl = "./img/"+imgname+time+".jpg";                                product.setImage(imgurl);                                System.out.println(imgurl);                                File saveFile = new File(path+"/" + imgname+time+".jpg"); // 定义一个file指向一个具体的文件                                try {                                        item.write(saveFile);// 把上传的内容写到一个文件中                                        System.out.println("上传到"+path+"成功");                                } catch (Exception e) {                                        /* e.printStackTrace(); */                                        System.out.println("文件"+path+"为空");                                }                        }                }                 if(productDaoService.addProduct(product)){                        PrintWriter out = response.getWriter();                        out.print("");                }else {                        PrintWriter out = response.getWriter();                        out.print("");                }        }

看完上述内容,你们掌握java文本和图片同时提交表单的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0