網頁

2019/11/27

Spring Boot 上傳檔案範例 upload file to Controller example

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
哈囉你好嗎
真心感謝
期待再相逢

參考:

沒有留言:

張貼留言