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实现图片和文本同时提交到表单的详细内容,感谢大家的学习和对我们的支持。

(0)

相关推荐

  • Java后台防止客户端重复请求、提交表单实现原理

    这篇文章主要介绍了Java后台防止客户端重复请求.提交表单实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 在Web / App项目中,有一些请求或操作会对数据产生影响(比如新增.删除.修改),针对这类请求一般都需要做一些保护,以防止用户有意或无意的重复发起这样的请求导致的数据错乱. 常见处理方案 1.客户端 例如表单提交后将提交按钮设为disable 等等方法... 2.服务端 前端的限制仅能解决少部分问题,且不够彻底,后端自有的

  • Java传入用户名和密码并自动提交表单实现登录到其他系统的实例代码

    不用单点登录,模拟远程项目的登录页面表单,在访问这个页面的时候自动提交表单到此项目的登录action,就可以实现登录到其他系统. ssh框架项目 1.以下是本地系统的action代码: import java.io.IOException; import java.util.List; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.i

  • java通过模拟post方式提交表单实现图片上传功能实例

    本文实例讲述了java通过模拟post方式提交表单实现图片上传功能.分享给大家供大家参考,具体如下: 模拟表单html如下: <form action="up_result.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1"> <label> <input type="tex

  • java图片和文本同时提交到表单的实例代码

    首先来看如下效果图片: 表单代码: <form action="/addPro" method="post" enctype="multipart/form-data"> <a>宠物(或产品)类型:</a><select id="categoryID" name="cid"></select><br/><br/> <a

  • 使用Vue动态生成form表单的实例代码

    具有数据收集.校验和提交功能的表单生成器,包含复选框.单选框.输入框.下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展. 欢迎大家star学习交流:github地址 示例 https://raw.githubusercontent.com/xaboy/form-create/dev/images/sample110.jpg 安装 npm install form-create OR git clone https://github.com/xa

  • AngularJs表单验证实例代码解析

    常用的表单验证指令如下详情: 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type="text" required /> 2. 最小长度 验证表单输入的文本长度是否大于某个最小值,在输入字段上使用指令ng-minleng= "{number}": <input type="text" ng-minlength="5" /> 3.

  • BootStrap表单验证实例代码

    Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 下面给大家分享bootstrap表单验证实例代码,具体代码如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@

  • 第七篇Bootstrap表单布局实例代码详解(三种表单布局)

    Bootstrap提供了三种表单布局:垂直表单,内联表单和水平表单.下面逐一给大家介绍,有兴趣的朋友一起学习吧. 创建垂直或基本表单: •·向父 <form> 元素添加 role="form". •·把标签和控件放在一个带有 class .form-group 的 <div> 中.这是获取最佳间距所必需的. •·向所有的文本元素 <input>.<textarea> 和 <select> 添加 class .form-cont

  • jQuery 表单序列化实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所述: $(function(){ $('#send').click(function(){ $.ajax({ type: "GET", url: "test.json", data: {username:$("#username").val(), password:$("#password").val()}, // 参数为对象 dataType: "json"

  • Bootbox将后台JSON数据填充Form表单的实例代码

    序言: 刚结束公司的三个月试用期,意味着我即将正式步入社会成为广大从事IT行业的一员.作为一个编程小白,无论从技术层面还是知识层面都是比较薄弱的,想要成为一个优秀的程序员不断的学习与探索是不可避免的.我相信一切的付出与收获是成正比的!Fighting! 这几天在做公司的实际项目的时候,需要实现选中Bootstrap table中的任意一行数据点击编辑按钮弹出一个模态框以表单的形式对该行数据进行编辑.获取表格行的数据是比较方便的,具体可以查找Bootstrap table参考文档,具体地址可以直接

  • Bootstarp 基础教程之表单部分实例代码

    参考:BootStrap中的表单大全 bootstrap 表单部分,具体代码如下所示: <div class="container"> <form action="#" method="post"> <fieldset> <legend>用户登陆</legend> <div class="form-group"> <label>用户名:<

  • SSH框架实现表单上传图片实例代码

    SSH框架的一个上传到服务器然后显示在页面上的小实例,用的是简单的form表单形式,数据包括图片的url地址保存在数据库中,图片上传到tomcat服务器下的项目文件夹里,然后页面展示图片, 算是好好把上传功能给过了一遍了,当然还有什么H5上传,分片上传等等这里就不提了,适用于初学上传文件的例子. 使用Bootstrap fileinput.js上传控件, GitHub源码下载:https://github.com/kartik-v/b... 页面上需要引入的CSS和JS <link rel=&quo

  • Spring security 自定义过滤器实现Json参数传递并兼容表单参数(实例代码)

    依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g

随机推荐