Rumah >hujung hadapan web >tutorial js >利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能(图文教程)

利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能(图文教程)

亚连
亚连asal
2018-05-22 09:49:241611semak imbas

这篇文章主要介绍了利用 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:&#39;user/upload.do&#39;,//请求地址
  data: form,   //请求参数
  type: &#39;POST&#39;,  //请求类型
  dataType: &#39;json&#39;,//服务器返回的数据类型
  contentType: false,//没有设置任何内容类型头信息
  processData: false, //见jQuery_api详解
  success: function(obj){ //成功时回调函数,obj表示服务器返回的数据
    if(obj.state==0){
      $(&#39;#result&#39;).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);
  }

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

基于apicloudAJAX请求代码合集(绝对详细)

原生JS实现Ajax跨域请求flask响应内容(图文教程)

Ajax 实现网站劫持的检测方法

Atas ialah kandungan terperinci 利用 FormData 对象和 Spring MVC 配合实现Ajax文件下载功能(图文教程). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn