十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
java文本和图片怎么实现同时提交表单?相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。
专注于为中小企业提供成都网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业庐山免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
首先来看如下效果图片:
表单代码:
提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到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文本和图片同时提交表单的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!