小编Fel*_*era的帖子

为什么在将 Mono<Void> 映射到 Mono<String> 时会收到空字符串?

我正在使用 Spring WebFlux 开发 API REST,但在上传文件时遇到问题。它们被存储,但我没有得到预期的返回值。

这就是我所做的:

  1. 接收 Flux<Part>
  2. 将部件转换为文件部件。
  3. 使用 transferTo() 保存部分(这将返回 Mono<Void>)
  4. 使用文件名将 Mono<Void> 映射到 Mono<String>。
  5. 将 Flux<String> 返回给客户端。

我希望返回文件名,但客户端得到一个空字符串。

控制器代码

@PostMapping(value = "/muscles/{id}/image")
public Flux<String> updateImage(@PathVariable("id") String id, @RequestBody Flux<Part> file) {
    log.info("REST request to update image to Muscle");
    return storageService.saveFiles(file);
}
Run Code Online (Sandbox Code Playgroud)

存储服务

public Flux<String> saveFiles(Flux<Part> parts) {
    log.info("StorageService.saveFiles({})", parts);
    return
            parts
            .filter(p -> p instanceof FilePart)
            .cast(FilePart.class)
            .flatMap(file -> saveFile(file));
}

private Mono<String> saveFile(FilePart filePart) {
    log.info("StorageService.saveFile({})", filePart);
    String filename = DigestUtils.sha256Hex(filePart.filename() + new Date());
    Path …
Run Code Online (Sandbox Code Playgroud)

java spring spring-webflux

2
推荐指数
1
解决办法
2289
查看次数

标签 统计

java ×1

spring ×1

spring-webflux ×1