Spring Boot 上傳檔案到Controller範例如下。
接收上傳檔案的Controller方法,HTTP Method設為@PostMapping
,傳入參數設為MultipartFile
。
下面是本範例要上傳的文字檔內容。
helloworld.txt
哈囉你好嗎
真心感謝
期待再相逢
下面的DemoController.upload()
用來接收上傳的文字檔helloworld.txt
並在console印出內容。
DemoController
package com.abc.demo.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@RestController
public class DemoController {
@PostMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file) throws IOException {
System.out.println(file.getOriginalFilename()); // 寫出檔案名稱
BufferedInputStream is = new BufferedInputStream(file.getInputStream()); // 建立檔案輸入串流
ByteArrayOutputStream os = new ByteArrayOutputStream(); // 建立ByteArray輸出串流
int result;
while((result = is.read()) != -1) { // 從輸入串流讀取資料
os.write((byte) result); // 將讀取的資料寫出至輸出串流
}
System.out.println(os.toString("UTF-8")); // 將輸出串流印出
}
}
檔案上傳後的執行結果如下。
helloworld.txt
哈囉你好嗎
真心感謝
期待再相逢
參考:
沒有留言:
張貼留言