Heim  >  Artikel  >  Web-Frontend  >  FormData und Spring MVC implementieren die Funktion zum Herunterladen von Ajax-Dateien

FormData und Spring MVC implementieren die Funktion zum Herunterladen von Ajax-Dateien

php中世界最好的语言
php中世界最好的语言Original
2018-03-31 10:39:222495Durchsuche

Dieses Mal bringe ich Ihnen FormData und Spring MVC zur Implementierung der Ajax-Funktion zum Herunterladen von Dateien . Was sind die Vorsichtsmaßnahmen für FormData und Spring MVC zur Implementierung der Funktion zum Herunterladen von Ajax-Dateien? Das Folgende ist ein praktischer Fall. Schauen wir uns das an.

Ajax-Datei-Download

Verwendung des FormData-Objekts und Spring MVC zur Implementierung der Ajax-Datei-Upload-Funktion:

Schritte

1. Komponenten importieren und statische Skripte vorbereiten

<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. Ereignisse an Schaltflächen binden

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

2 .Holen Sie sich die Datei

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

3. Erstellen Sie das Formularobjekt im Speicher und fügen Sie die an den Server übertragenen Daten hinzu

//创建内存中的表单对象
var form = new FormData();
//向其中添加要传输的数据
form.append("userfile1", file1);
form.append("userfile2", file2);

4.ajax() Objekt hochladen

$.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-Präsentationsschicht

@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);
  }

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall in diesem Artikel gelesen haben Weitere Informationen finden Sie auf der chinesischen PHP-Website. Weitere verwandte Artikel!

Empfohlene Lektüre:

So implementieren Sie eine domänenübergreifende WebApi-Ajax-Anfrage mit CORS

So implementieren Sie das dynamische Laden von Kombinationsfelder mit Ajax (mit Code)

Das obige ist der detaillierte Inhalt vonFormData und Spring MVC implementieren die Funktion zum Herunterladen von Ajax-Dateien. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn