簡體   English   中英

正確的發送和獲取文件的方式Spring

[英]Correct way of sending and getting files Spring

什么是正確的發送和獲取文件並將其保存到文件夾的方式?

我發郵件來自郵遞員的身體形式數據:2個鍵'uploadfile',每個都有一個拉鏈。

此代碼只有一個zip並保存,忽略第二個zip。

如何實現它來保存這兩個文件? 也。 我應該在一個密鑰中發送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);

你可以讓你的服務接受多部分文件的數組,然后你可以發送到它想要的文件上傳它,這里是一個例子

@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.";
        }
    }
} 

對於關鍵部分,您可以使用相同的密鑰發送所有文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM