方法一:使用ajax异步提交

此种方法的好处是可以回调响应结果。

html代码:

<form action="${basePath}/save" method="post" name="form" id="formId"><table><tr><td>名称:</td><td><input type="text" id="title" name="entity.title" class="input"></td></tr><tr><td>图片:</td><td><input type="file" id="uploadImage" name="uploadImage"accept="image/gif,image/png,image/jpeg,image/bmp"/><input type="hidden" id="imgUrl" name="entity.imgUrl"value="<s:property value='entity.imgUrl'/>"><span>提示:文件大小不超过200k,建议图片宽高为300px*300px</span></td></tr><tr><td><input type="button" onclick="doSubmit()" value="提交"/><input type="reset" value="取消"></td></tr></table>
</form>

使用的是ajax异步单独处理并提交,此处form表单的enctype="multipart/form-data"属性可以不添加。

js处理代码:

function doSummit(){
var formData=new FormData($("#formId")[0]);
$.ajax({url:url,type: 'post',cache: false, //上传文件不需要缓存async : true,data: formdata,processData: false, // 此处是关键:告诉jQuery不要去处理发送的数据contentType: false, // 此处是关键:告诉jQuery不要去设置Content-Type请求头success: function (data) {//处理成功后动作,比如调转window.location.href ='/list'},error : function(XMLHttpRequest, textStatus, errorThrown) {alert(errorThrown);}});
}

此处contentType和processDate属性必须添加,否则后台无法接收。

方法二:使用form表单自带的submit功能直接提交

html代码:

<form action="${basePath}/save" method="post" name="form" id="form      enctype="multipart/form-data"><table><tr><td>名称:</td><td><input type="text" id="title" name="entity.title" class="input"></td></tr><tr><td>图片:</td><td><input type="file" id="uploadImage" name="uploadImage"accept="image/gif,image/png,image/jpeg,image/bmp"/><input type="hidden" id="imgUrl" name="entity.imgUrl"value="<s:property value='entity.imgUrl'/>"><span>提示:文件大小不超过200k,建议图片宽高为300px*300px</span></td></tr><tr><td><input type="submit" value="提交"/><input type="reset" value="取消"></td></tr></table>
</form>

点击提交按钮,触发form表单的提交操作,直接将数据提交到后台,此处必须配置enctype="multipart/form-data"。

java统一处理代码:

仅供参考,具体实现需结合自身业务。

    @RequestMapping("/save")@ResponseBodypublic JSONObject Edit(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "file", required = false) MultipartFile file) {JSONObject json = new JSONObject();try {// 获取图片原始文件名String originalFilename = file.getOriginalFilename();// 文件名使用当前时间String name = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());// 获取上传图片的扩展名(jpg/png/...)String extension = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();// 图片上传的相对路径(因为相对路径放到页面上就可以显示图片)String path = "/upload/" + name + "." + extension;// 图片上传的绝对路径String url = request.getSession().getServletContext().getRealPath("") + path;File dir = new File(url);if (!dir.exists()) {dir.mkdirs();}// 将图片上传到本地file.transferTo(new File(url));// 将相对路径写回(json格式)json.put("path", path);// 设置响应数据的类型jsonresponse.setContentType("application/json; charset=utf-8");// 写回response.getWriter().write(json.toString());} catch (Exception e) {throw new RuntimeException("服务器繁忙,上传图片失败");}return json;}

form表单同时提交带文本和图片的数据相关推荐

  1. js实现Form表单submit提交截获数据(各浏览器通用)

    js实现Form表单submit提交截获数据(各浏览器通用) js实现Form表单submit提交截获数据(各浏览器通用) No Comments | js , 安全 , PHP | by calms ...

  2. 使用ajax方法实现form表单的提交

    2019独角兽企业重金招聘Python工程师标准>>> 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控 ...

  3. 用js将form表单同时提交到两个不同页面的方法

    用js将form表单同时提交到两个不同页面的方法: <script type="text/javascript"> function dosubmit(){ windo ...

  4. form表单重复提交

    现象: 后台完成数据库操作后返回到页面,这时点击浏览器的后退再提交或刷新页面,会导致form表单重复提交 原因: 第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其它页面才消失,在自 ...

  5. .form文件_含文件上传的form表单AJAX提交小结

    最近在学习PHP时,遇到不知道如何含文件上传的form表单AJAX提交,现在把这些记录下来以备自己后续复习时用: HTML代码 *姓名: *性别: {eq name='list.sex' value= ...

  6. 防止Form表单重复提交的客户端及服务器端的方式

    参考:https://www.cnblogs.com/xdp-gacl/p/3859416.html 上文只是介绍了form表单提交,没有介绍form表单异步提交 上文只是介绍了单个Servlet的处 ...

  7. vue的form表单在提交成功后置空

    vue的form表单在提交成功后置空 form表单 说明 :form表单加上属性值 ref="form" 点击事件加入 roleManager.$refs['form'].rese ...

  8. html表单通过js提交表单提交,JavaScript动态创建form表单并提交的实现方法

    本文实例讲述了JavaScript动态创建form表单并提交的实现方法.分享给大家供大家参考,具体如下: 页面布局有些复杂的情况下,可能需要在页面中动态创建一个 form,JavaScript 创建 ...

  9. layui form表单ajax提交

    <form class="layui-form" method="post" action=""><div class=& ...

最新文章

  1. java 打不开空客手册_空客A320AMM维护手册使用介绍.ppt
  2. 能被计算机硬件理解的语言,(计算机原理综合练习一含答案.doc
  3. 双11期间,请关爱程序员!
  4. Java Web应用的代码分层最佳实践。
  5. redis rdb aof区别_10分钟彻底理解Redis的持久化机制:RDB和AOF
  6. 我之所以抛弃Java而选择Kotlin的10个理由
  7. Cocos2dx---之粒子系统
  8. 斯威夫特山地车_斯威夫特枚举
  9. 计算机中函数counta是什么意思,excel中counta函数和count函数的区别是什么?
  10. Helm 安装 nginx-ingress 的方法
  11. Base64与MIME和UTF-7
  12. Debian忘记密码修改
  13. Python中的极端梯度增强(XGBoost)集成
  14. 如果secureCRT安装时位置改变,EVE-NG如何关联secureCRT
  15. Java计算机毕业设计德云社票务系统源码+系统+数据库+lw文档
  16. 2019第二届中国天津国际智慧消防高峰论坛
  17. 混合颜色的色值计算公式
  18. curl 返回CURLE_COULDNT_RESOLVE_HOST、CURLE_COULDNT_CONNECT
  19. linux脚本读文件的值,shell脚本如何从json文件读取一个某个值
  20. Teradata数据库简介

热门文章

  1. ini 文件 使用说明
  2. PyQt5系列教程(二)利用QtDesigner设计UI界面
  3. 一文带你深度探析:软硬科技协同创新正当时
  4. pip查看安装包的可安装版本
  5. STP生成树协议|适合初学|华为,思科配置|阿树啊~
  6. 事务的传播行为propagation(讲得比较好)
  7. 我,单身沪漂,想有只猫
  8. C#如何获取本机IP地址,两种方法
  9. 1556 Color the ball
  10. 如何学习一种开发框架