利用 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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。