首先来看如下效果图片:
表单代码:
(推荐视频教程:java教程)
<form action=/addPro method=post enctype=multipart/form-data> <a>宠物(或产品)类型:</a><select id=categoryID name=cid></select><br/><br/> <a>宠物(或产品)名字:</a><input type=text name=cname><br/><br/> <a>一句话介绍:</a><input type=text name=introduction><br/><br/> <a>题目:</a><input type=text name=title><br/><br/> <a>价钱:</a><input type=text name=price><br/><br/> <a>库存:</a><input type=text name=stock><br/><br/> <a>状态:</a><select name=status> <option value=1>在售</option> <option value=2>下架</option> <option value=3>删除</option> </select><br/><br/> <a>头像设置:</a><input type=file οnchange=previewFile() name=fileName> <br/> <img src=${data.image} alt=Image preview/><br/> <a>详细描述(编辑完需要在文本框右上角点保存):</a><br/> <div id=editor> <p>商品详细描述</p> <p>编辑完需要在文本框右上角点保存</p> </div><input type=hidden name=details id=detail><br/><br/> <input type=submit value=新增商品> </form>
提交表单是采用二进制方式提交,所以一般用来上传图片操作,当在这个表单下同时上传文本,就会报错。但是业务需要上传商品是文本和图片同时上传的,所以这里要用到commons的四个包,使用Maven导入,如下:
<!-- https://mvnrepository.com/artifact/commons-io/commons-io有关图片文本同时上传 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.1</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils --> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.2</version> </dependency>
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(<script language=\javascript\>alert('ADD SUCCESS');window.location.href='/admin/administrator'</script>); }else { PrintWriter out = response.getWriter(); out.print(<script language=\javascript\>alert('增加失败');window.location.href='/admin/addProduct'</script>); } }
相关文章教程推荐:java入门教程
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。