1、RestController与RequestPart
@PostMapping("/upload")
public Mono<String> process(@RequestPart("files") Flux<FilePart> filePartFlux) {
    return filePartFlux.flatMap(it -> it.transferTo(Paths.get("/tmp/" + it.filename())))
        .then(Mono.just("OK"));
}2、RestController与ModelAttribute
@PostMapping("/upload-model")
public Mono<String> processModel(@ModelAttribute Model model) {
    model.files.forEach(it -> it.transferTo(Paths.get("/tmp/" + it.filename())));
    return Mono.just("OK");
}
class Model {
    private List<FilePart> files;
    //getters and setters
}3、upload方法代码
public Mono<ServerResponse> upload(ServerRequest request) {
    Mono<String> then = request.multipartData().map(it -> it.get("files"))
        .flatMapMany(Flux::fromIterable)
        .cast(FilePart.class)
        .flatMap(it -> it.transferTo(Paths.get("/tmp/" + it.filename())))
        .then(Mono.just("OK"));
    return ServerResponse.ok().body(then, String.class);
}4、使用WebFlux的pom.xml文件的依赖项参考
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-reactor-netty</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webflux</artifactId> </dependency>