ソフトウェアエンジニアの日常の雑記

日々思ったことをまとめます

spring webfluxでfile upload

本家はこちら

SpringBoot webfluxでは、ファイルアップロードはMultiPartで取得できないので、探す。 PartFileというのがよかったでこちらで実験する。

Javaはこちら

package net.ksasaki.springboot.example.controller;

import org.springframework.http.MediaType;
import org.springframework.http.codec.multipart.FilePart;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import reactor.core.publisher.Mono;

import java.io.File;

@Controller
@RequestMapping("")
public class SampleController {

    @RequestMapping("")
    public String index() {
        return "index";
    }

    @ResponseBody
    @PostMapping(value = "/form", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Mono form(@RequestPart("part") FilePart part) {

        File file = new File(part.filename());
        part.transferTo(file);

        return Mono.empty();
    }
}

HTMLはこちら

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<form action="/form" enctype="multipart/form-data" method="post">
    <input type="file" name="parts">
    <button type="submit">送信</button>
</form>
</body>
</html>

無事取得できたので、メモ。