2016-11-29 1 views
1

ファイルを送受信してフォルダに保存する正しい方法は何ですか?ファイルの送受信の正しい方法Spring

私は郵便配達員からボディフォームデータを使ってポストを送ります:2つのキー 'uploadfile'にそれぞれ1つのジップが付いています。

このコードでは、1つのジップだけが取得され、保存されます。第2のジップは無視されます。

両方のファイルを保存するにはどうすれば実装できますか? また、 1つのキーで2つのファイルを送信する必要がありますか?または分離されたキーの各ファイル?

@RequestMapping(value = "/api/uploadFile", method = RequestMethod.POST) 
@ResponseBody 
public ResponseEntity<?> uploadFile(
     @RequestParam("uploadfile") MultipartFile uploadfile) { 

    try { 


      // Get the filename and build the local file path (be sure that the 
      // application have write permissions on such directory) 

      String filename = uploadfile.getOriginalFilename(); 
      String directory = "C://Develop//files"; 
      String filepath = Paths.get(directory, filename).toString(); 

      filenameZip = "c:/Develop/files/"+filename; 
      directoryZip = "c:/Develop/files"; 

      // Save the file locally 
      BufferedOutputStream stream = 
        new BufferedOutputStream(new FileOutputStream(new File(filepath))); 
      stream.write(uploadfile.getBytes()); 
      stream.close(); 



    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
     return new ResponseEntity<>(HttpStatus.BAD_REQUEST); 
    } 
     // unzip(filenameZip, directoryZip); 
     return new ResponseEntity<>(HttpStatus.OK); 
} // method uploadFile 

郵便集配人ログ:あなたはあなたのサービスは、マルチパートファイルの配列を受け入れることができます

var data = new FormData(); 
data.append("uploadfile", "pasta1.zip"); 
data.append("uploadfile", "pasta2.zip"); 

var xhr = new XMLHttpRequest(); 
xhr.withCredentials = true; 

xhr.addEventListener("readystatechange", function() { 
    if (this.readyState === 4) { 
console.log(this.responseText); 
    } 
}); 

xhr.open("POST", "http://localhost:8080/api/uploadFile"); 
xhr.setRequestHeader("authorization", "Basic b3BlcmF0aW9uczpvcGVyYXRpb25z"); 
xhr.setRequestHeader("cache-control", "no-cache"); 
xhr.setRequestHeader("postman-token", "e7b6fcae-4a49-de34-ba7c-efd412fb244a"); 

xhr.send(data); 

答えて

3

、あなたは同じくらいあなたはそれをアップロードするファイルのたいとここexmaple

あるとしてそれを送ることができます
@RequestMapping(value="/multipleSave", method=RequestMethod.POST) 
    public @ResponseBody String multipleSave(@RequestParam("file") MultipartFile[] files){ 
     String fileName = null; 
     String msg = ""; 
     if (files != null && files.length >0) { 
      for(int i =0 ;i< files.length; i++){ 
       try { 
        fileName = files[i].getOriginalFilename(); 
        byte[] bytes = files[i].getBytes(); 
        BufferedOutputStream buffStream = 
          new BufferedOutputStream(new FileOutputStream(new File("F:/cp/" + fileName))); 
        buffStream.write(bytes); 
        buffStream.close(); 
        msg += "You have successfully uploaded " + fileName +"<br/>"; 
       } catch (Exception e) { 
        return "You failed to upload " + fileName + ": " + e.getMessage() +"<br/>"; 
       } 
      } 
      return msg; 
     } else { 
      return "Unable to upload. File is empty."; 
     } 
    } 
} 

キーパーツでは、すべてのファイルを同じキーで送信することができます

関連する問題