当前位置: 首页 > 知识库问答 >
问题:

如何使用WebFlux上传多个文件?

郭乐湛
2023-03-14
Mono<MultiValueMap<String, Part> body = request.body(toMultipartData());
body.flatMap(map -> FilePart part = (FilePart) map.toSingleValueMap().get("file"));

但是如何为多个文件做呢?

PS.在webflux中有没有另一种上传一组文件的方法?

共有1个答案

寇景明
2023-03-14

我已经找到了一些解决办法。假设我们发送一个http POST请求,其中包含一个包含我们文件的参数files。

注意:响应是任意的

>

  • RequestPart的RestController

    @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"));
    }
    
    @PostMapping("/upload-model")
    public Mono<String> processModel(@ModelAttribute Model model) {
        model.getFiles().forEach(it -> it.transferTo(Paths.get("/tmp/" + it.filename())));
        return Mono.just("OK");
    }
    
    class Model {
        private List<FilePart> files;
        //getters and setters
    }
    
    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);
    }
    

  •  类似资料:
    • 我试图理解以下文档: Transferutility.UploadDirectory null null null

    • 我需要上传一个文件并读取内容,使用spring mvc很容易,但使用spring webflux,我不知道如何处理FilePart和DataBuffer流量 我期待着这样的回报:

    • 问题内容: 我正在使用和Path上传单个文件。代码如下: 对于一个文件,这很好用。我需要测试多个文件上传。如何传递多个文件? 问题答案: Selenium仍然不支持多个文件上传: 但是,根据webdriver:upload多个文件,您应该能够 在Chrome中 通过使用换行符连接文件路径 来解决该问题: 另请参阅: 文件上传-在FireFox中上传多个文件

    • 我正在尝试使用DropZone上载多个文件。但在控制器中检索文件名时出现问题。请帮我找出哪里出了错。我已经在下面发布了我的代码。 DropZone的HTML代码: 脚本文件,用于: 在控制器actionCreate()方法中: 当我在拖放框中添加图片并点击提交按钮时,拖放框中的图片显示成功结果。但是当我试着打印$模型的时候-

    • 问题内容: 我想使用PHP上传文件,但问题是我不知道要上传多少文件。 我的问题是,如果使用该如何上传文件? 我将仅添加“文件”框,并使用JavaScript创建更多要上传的文件输入,但是如何在PHP中处理它们呢? 问题答案: 请参阅:$ _FILES ,处理文件上传

    • 问题内容: 有没有办法用Flask接收多个上传的文件?我尝试了以下方法: 然后打印内容 如果我上传多个文件,它将仅打印该集中的第一个文件: 是否可以使用Flask的内置上传处理方式接收多个文件?谢谢你的帮助! 问题答案: 你可以使用flask.request.files的方法getlist,例如: