利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能
Ajax文件下载
利用FormData对象和SpringMVC配合可以实现Ajax文件上载功能:
步骤
1.导入组件并准备静态脚本
commons-fileupload commons-fileupload 1.3.2 Ajax文件上载
1.绑定事件到按钮
$("upload").click(ajaxUpload);
2.获取文件
varfile1=$("#file1")[0].files[0]; varfile2=$("#file2")[0].files[0];
3.创建内存中的表单对象,并添加向服务器传输的数据
//创建内存中的表单对象 varform=newFormData(); //向其中添加要传输的数据 form.append("userfile1",file1); form.append("userfile2",file2);
4.ajax()上传对象
$.ajax({ url:'user/upload.do',//请求地址 data:form,//请求参数 type:'POST',//请求类型 dataType:'json',//服务器返回的数据类型 contentType:false,//没有设置任何内容类型头信息 processData:false,//见jQuery_api详解 success:function(obj){//成功时回调函数,obj表示服务器返回的数据 if(obj.state==0){ $('#result').html("成功!"); } } });
5.Spring-MVC表现层
@RequestMapping("/upload.do") @ResponseBody publicJsonResultupload( MultipartFileuserfile1, MultipartFileuserfile2)throwsException{ //SpringMVC中可以利用MultipartFile //接收上载的文件!文件中的一切数据 //都可以从MultipartFile对象中找到 //获取上再是原始文件名 Stringfile1= userfile1.getOriginalFilename(); Stringfile2= userfile2.getOriginalFilename(); System.out.println(file1); System.out.println(file2); //保存文件的3种方法: //1.transferTo(目标文件) //将文件直接保存到目标文件,可以处理大文件 //2.userfile1.getBytes()获取文件的全部数据 //将文件全部读取到内存,适合处理小文件!! //3.userfile1.getInputStream() //获取上载文件的流,适合处理大文件 //保存的目标文件夹:/home/soft01/demo Filedir=newFile("D:/demo"); dir.mkdir(); Filef1=newFile(dir,file1); Filef2=newFile(dir,file2); //第一种保存文件 //userfile1.transferTo(f1); //userfile2.transferTo(f2); //第三种利用流复制数据 InputStreamin1=userfile1.getInputStream(); FileOutputStreamout1= newFileOutputStream(f1); intb; while((b=in1.read())!=-1){ out1.write(b); } in1.close(); out1.close(); InputStreamin2=userfile2.getInputStream(); FileOutputStreamout2= newFileOutputStream(f2); byte[]buf=newbyte[8*1024]; intn; while((n=in2.read(buf))!=-1){ out2.write(buf,0,n); } in2.close(); out2.close(); returnnewJsonResult(true); }
总结
以上所述是小编给大家介绍的利用FormData对象和SpringMVC配合实现Ajax文件下载功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。