Mono<MultiValueMap<String, Part> body = request.body(toMultipartData());
body.flatMap(map -> FilePart part = (FilePart) map.toSingleValueMap().get("file"));
但是如何为多个文件做呢?
PS.在webflux中有没有另一种上传一组文件的方法?
我已经找到了一些解决办法。假设我们发送一个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,例如: