视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
FormData与SpringMVC实现Ajax文件下载功能
2020-11-27 19:57:24 责编:小采
文档

这次给大家带来FormData与Spring MVC实现Ajax文件下载功能,FormData与Spring MVC实现Ajax文件下载功能的注意事项有哪些,下面就是实战案例,一起来看一下。

Ajax文件下载

利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能:

步骤

1.导入组件并准备静态脚本

<dependency>
 <groupId>commons-fileupload</groupId>
 <artifactId>commons-fileupload</artifactId>
 <version>1.3.2</version>
</dependency>
 <h1>Ajax 文件上载</h1>
 <input type="file" id="file1"> <br>
 <input type="file" id="file2"> <br>
 <input type="button" id="upload" value="上载" >
 <p id="result"></p>

1.绑定事件到按钮

$("upload").click(ajaxUpload);

2.获取文件

var file1 = $("#file1")[0].files[0];
var file2 = $("#file2")[0].files[0];

3.创建内存中的表单对象,并添加向服务器传输的数据

//创建内存中的表单对象
var form = new FormData();
//向其中添加要传输的数据
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
public JsonResult upload( 
 MultipartFile userfile1, 
 MultipartFile userfile2) throws Exception{
 //Spring MVC 中可以利用 MultipartFile 
 //接收 上载的文件! 文件中的一切数据
 //都可以从 MultipartFile 对象中找到
 //获取上再是原始文件名
 String file1 = 
 userfile1.getOriginalFilename();
 String file2 = 
 userfile2.getOriginalFilename();
 System.out.println(file1);
 System.out.println(file2);
 //保存文件的3种方法:
 //1. transferTo(目标文件)
 // 将文件直接保存到目标文件, 可以处理大文件
 //2. userfile1.getBytes() 获取文件的全部数据
 // 将文件全部读取到内存, 适合处理小文件!!
 //3. userfile1.getInputStream()
 // 获取上载文件的流, 适合处理大文件
 //保存的目标文件夹: /home/soft01/demo
 File dir = new File("D:/demo");
 dir.mkdir();
 File f1 = new File(dir, file1);
 File f2 = new File(dir, file2);
 //第一种保存文件
 //userfile1.transferTo(f1);
 //userfile2.transferTo(f2);
 //第三种 利用流复制数据
 InputStream in1 = userfile1.getInputStream();
 FileOutputStream out1 = 
 new FileOutputStream(f1);
 int b;
 while((b=in1.read())!=-1){
 out1.write(b);
 }
 in1.close();
 out1.close();
 InputStream in2 = userfile2.getInputStream();
 FileOutputStream out2=
 new FileOutputStream(f2);
 byte[] buf= new byte[8*1024];
 int n;
 while((n=in2.read(buf))!=-1){
 out2.write(buf, 0, n);
 }
 in2.close();
 out2.close();
 return new JsonResult(true);
 }

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

用CORS实现WebApi Ajax跨域请求的方法

Ajax怎么实现动态加载组合框(附代码)

下载本文
显示全文
专题