如何实现Multipartfile 的异步请求
发布时间:2025-05-19 11:02:44 发布人:远客网络
一、如何实现Multipartfile 的异步请求
添加pom依赖,因为用的ajax,数据需要转成json的格式进行传输,所以还有加入一个JSON jar包:
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.37</version>
applicationContext.xml里面需要加上:
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<property name="maxUploadSize" value="5400000"></property>
<form id="uploadForm" name="uploadForm"
enctype="multipart/form-data">
<input name="messageContent" value="多个参数的情况下">
<label>文件</label><input type="file" name="file">
<button class="btn" type="button" id="doSave">提交</button>
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
//data://注意只要是写在表单里面的,都不需要加这个属性。在controller中可以根据@RequestParam String str获取到属性值。
contentType:"application/x-www-form-urlencoded; charset=utf-8",
//接受到的data还只是一个字符串,需要转成json对象
error: function(data)//服务器响应失败处理函数
public String method2(@RequestParam MultipartFile file,
@RequestParam String messageContent){
//多个参数的话只要多个@RequestParam即可,注意参数名要和表单里面的属性名一致
JSONObject json=new JSONObject();
System.out.println(messageContent);
int m=new Random().nextInt(100)+10;
String fileName= file.getName();
InputStream inputStream= file.getInputStream();
String content= file.getContentType();
orgiginalFileName= file.getOriginalFilename();
System.out.println("fileName:"+fileName+", inputStream:"+ inputStream
+"\r\n content:"+content+", orgiginalFileName:="+ orgiginalFileName
+"\r\n projectName:");
json.put("message","success");
System.out.println(json.toJSONString());
二、ajax请求数据并分页怎么做
1、ajax请求后台拿到json类型的数据后,可以在它的success回调方法中进行动态分页,也就是表格重绘,此时,我们需要得到的数据包括:查询得到的数据、数据总条数、总页数、当前页数,其中前三条可在后台获取,对于当前页数,需要从前端获取点击页数再通过请求传递给后台,后台做完相应处理后再传回给前端。
2、var schoolid=$("#schoolid option:selected").text();
3、var apptype=$("#apptype option:selected").text();
4、var appname=$("#appname").val();
5、data:{'schoolid':schoolid,'apptype':apptype,'page':page,'appname':appname},
6、var str="<tr><th class='w20'>应用编号</th>"
7、+"<th class='w15'>学校名称</th>"
8、+"<th class='w30'>应用名称</th>"
9、+"<th class='w25'>应用分类</th>"
10、+"<th class='w10'>应用类型</th></tr>";
11、for(var i=0;i<data.resultList.length;i++){
12、str+="<trοnclick='showAppDetail(this);'><td>"+data.resultList[i].appid+"</td><td>"
13、+data.resultList[i].schoolid+"</td><td>"+data.resultList[i].appname+"</td><td>"
14、+data.resultList[i].app_departid+"</td><td>"+data.resultList[i].apptype+"</td></tr>";
15、$("#table").html(str);//重绘table
16、var pageNum= data.pageNum;//获取得到的数据页数
17、var curPage= data.curPage;//获取当前页
18、/*若页数大于1则添加上一页、下一页链接*/
19、str="<ul><li><a href='javascript:void(0);οnclick=preEvent();' id='pre' data-num='1'>上一页</a></li>"
20、for(var i=0;i<data.pageNum;i++){
21、str+="<li><a href='javascript:void(0);οnclick=getData("+(parseInt(i)+1)+");' data-type='num'>"+(parseInt(i)+1)+"</a></li>";
22、if(str.indexOf("上一页")>-1){
23、str+="<li><a href='javascript:void(0);οnclick=nextEvent();' id='next' data-num='1'>下一页</a></li>"
24、+"<span>共<span id='pageNum'>"+pageNum+"</span>页</span></ul>";
25、str+="<span>共<span id='pageNum'>"+pageNum+"</span>页</span></ul>";
26、//把当前页码存到上一页、下一页的data-num属性中,这样可以在点击上一页或者下一页时知道应该跳到哪页
27、$("#pre").attr("data-num",curPage);
28、$("#next").attr("data-num",curPage);
29、var curPage=$("#pre").attr("data-num");
30、$(this).attr('disabled',"true");
31、var curPage=$("#next").attr("data-num");
32、var pageNum=$("#pageNum").text();
33、$(this).attr('disabled',"true");
34、注意:标签的href属性,如href=”javascript:void(0);οnclick=getData();”
35、要让原来的点击事件失去响应,重新给它定义点击事件,要给它加上javascript:void(0);这句话,若写的是href=”#”的话,点击默认会跳到页面顶部。
36、另外,ajax请求数据无刷新翻页是异步请求,所以标签的点击事件要写在它的属性里,如上例,若写在js当中,会造成
37、页面还没加载出来,事件就已经触发,导致没有任何响应。