AJAX提交form表单带文件上传

过了三天才想要写博客,这样不好,要改正

在做毕设的时候,用户发帖涉及到了文件上传的问题,在这里记录一下

背景:

在用户发帖的时候,用户只想发表文字postText,还有些用户想在发表postText的同时还发表一些图片,如何做?

上代码

不写的太细了,和流水账似的,挑重点记录一下。

1.前台的文件上传

本来想用form表单直接上传了,但是form提交时会刷新整个页面,但这不是我想要的,所以使用了ajax提交form表单。

利用ajax提交表单需要用到jquery.form.js这个包,网上有很多这个包的介绍

先看一下form表单的部分,很简单,只是单纯地记录一下。

 1 <form id="sendform" action="" method="post" >
 2                 <div class="row">
 3                     <div class="col-xs-2 post-label">
 4                         子主题名称:
 5                     </div>
 6                     <div class="col-xs-10">
 7                         <input type="text" name="menuName" id="menuName" value="${menu.menuName }" />
 8                     </div>
 9                 </div>
10                 <div class="row">
11                     <div class="col-xs-2 post-label">
12                         帖子标题:
13                     </div>
14                     <div class="col-xs-10">
15                         <input type="text" name="postName" id="postName" placeholder="帖子的标题" value="" />
16                     </div>
17                 </div>
18                 <div class="row">
19                     <div class="col-xs-2 post-label">
20                         帖子内容:
21                     </div>
22                     <div class="col-xs-10">
23                         <textarea rows="10" name="postText" class="post-area" id="content" placeholder="请输入帖子内容"></textarea>
24                     </div>
25                 </div>
26                 <div class="row">
27                     <div class="col-xs-2 post-label">
28                         选择图片:
29                     </div>
30                     <div class="col-xs-10" >
31                         <input type="file" name="file" id="fileRdc" />
32                     </div>
33                 </div>
34                 <div class="row">
35                     <div class="col-xs-2">
36                     </div>
37                     <div class="col-xs-10">
38                         <button type="button" class="btn btn-primary" id="tijiaoPost" >提交</a>
39                         <button type="button" class="btn btn-default" id="resetSendPost">清空</button>
40                     </div>
41                 </div>
42             </form>

重点来了,重点,重点,重点(重要的事情说三遍!)

ajax提交带文件上传的form表单

 1 <script src="assets/js/jquery-1.10.2.min.js"></script>
 2 <script src="assets/js/jquery.form.js"></script>
 3 <script type="text/javascript">
 4     $(function(){
 5     //点击提交按钮是将form通过AJAX提交
 6         $("#tijiaoPost").click(function(){
 7             //alert( $("#sendform").ajaxSubmit);
 8             //判断文件部分是否有文件
 9             alert(‘$("#fileRdc").val()---->‘+$("#fileRdc").val())
10             alert($("#fileRdc").val()==‘‘);
11             if($("#fileRdc").val()==null || $("#fileRdc").val() == ‘‘){
12                 //这里是ajax要将form表单提交的方法,一个只传postText另一个带了文件上传
13                 ajaxFile("${pageContext.request.contextPath}/sendPostText.do");
14             }else{
15                 ajaxFile("${pageContext.request.contextPath}/sendPostFile.do");
16             }
17         })
18     });
19     function ajaxFile(url){
20         $("#sendform").ajaxSubmit({
21                  url: url,
22                  type: "post",
23                  enctype:‘multipart/form-data‘,
24                  success: function(data) {
25                      alert(‘成功! ‘);
26                      page(1);
27                  }
28            });
29     }
30 </script>

2.后台部分利用两个controller方法接收ajax提交的form

 1 @RequestMapping("/sendPostFile")
 2     public String sendPostFile(HttpSession session,HttpServletRequest req,String menuName,String postName,String postText,@RequestParam(value="file",required = false) MultipartFile file) throws IllegalStateException, IOException{
 3         //获取userId和userName
 4         User user = (User)session.getAttribute("userSession");
 5         int userId = user.getUserId();
 6         String userName = user.getUserName();
 7         //传入表单中的menuName查出对应的menuId
 8         Menu menu = sendPostService.selectMenuId(menuName);
 9         int menuId = menu.getMenuId();
10         //调用sendPostService的sendPost方法将帖子信息存入到数据库中
11         int postId = sendPostService.sendPost(postName, menuId, userId, userName, postText);
12
13         if(file != null ){
14             //文件上传部分
15             //照片名字
16             String picFileName = StringUtils.newUUID();
17             //上传地址
18             String path =req.getRealPath("/assets/images/fileupload");
19             File picFile = new File(path,picFileName);
20             //先新建一个空白文件
21             picFile.createNewFile();
22             //保存文件
23             file.transferTo(picFile);
24             sendPostService.insertPicture(picFileName, userId, userName, postId);
25         }
26         return TIEZI;
27     }
28     @RequestMapping("/sendPostText")
29     public String sendPostText(HttpSession session,HttpServletRequest req,String menuName,String postName,String postText) throws IllegalStateException,    IOException{
30         return sendPostFile(session, req, menuName, postName, postText, null);
31     }

利用ajax提交带文件上传的form表单就这些了。

好好学习,天天向上!

时间: 2024-11-14 22:09:29

AJAX提交form表单带文件上传的相关文章

9.16 基于form表单的文件上传实现 ContextType

基于form表单传递普通键值对的方式传递数据: enctype="application/x-ww-form-urlencoded" 基于form表单上传文件 传递数据,非键值对: enctype="multipart/form-data" enctype="text/plain" 这种方式几乎不用 基于ajax传递普通键值对的方式传递数据到服务器 只要请求体有数据,request.body都有值 .但request.post 只有当conten

ajax中form表单中含有文件上传功能,后台语言是java,包括图片的下载,预览,删除

//样式 <li> <label>已有文档:</label> <div id="fileEdit"></div> </li> <li> <label>附件:</label> <input name="file" type="file" multiple="multiple" style="display:

使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的ajax $.ajax({ url:"${pageContext.request.contextPath}/public/testupload", type:"post", data:{username:username},

ajax提交form表单资料详细汇总

一.ajax提交form表单和不同的form表单的提交主要区别在于,ajax提交表单是异步提交的,而普通的是同步提交的表单.通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.传统普通的网页(不使用ajax)如果需要更新内容,必须重载整个网页页面. 二.通过ajax提交form实现的登录实例: <body> <h1 align="center">用户登录</h1> &

通过php jq ajax 提交form表单

参考http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2013/0619/13568.html html <div id="contact_form"> <form name="contact" method="post" > <label for="name" id="name_label">姓名</label

jquery的ajax提交form表单方式总结

方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx"; alert($('#formAddHandlingFee').serialize()); $.ajax({ type: "POST", dataType: "html", url: AjaxURL + '?Action=' + 'Submit

Struts2文件上传(基于表单的文件上传)

•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-FileUpload组件特点 –使用简单:可以方便地嵌入到JSP文件中,编写少量代码即可完成文件的上传功能 –能够全程控制上传内容 –能够对上传文件的大小.类型进行控制 •需要下载Common-FileUplaod框架地址(当然MyEclipce中Struts2支持里自带有这两个包): –http://jak

使用ajax提交form表单,包括ajax文件上传

前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },"json"); 又或者是这样的ajax $.ajax({ url:"${pageContext.request.contextPath}/public/testupload", type:"post", data:{username:username}, success:function(data){ w

form表单无刷新上传文件

很多时候,我们上传完文件之后,不想当前页面跳转,或者是刷新一下.那么我们需要怎么做呢? 首先,我们用的是最简单的form表单上传,提交方式.代码如下 <!--大家注意到这个form的target的了么?这个target属性的值frameFile,是form之后的 iframe的name值,这样的写法是让当前的form表单在提交表单内容的时候转交给iframe中进行页面 中表单处理,并且不会产生当前页面跳转!--> <form id="uploadForm" class