有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringWebFlux多部分文件中的java句柄错误。转让给

我正在使用spring webflux,我想知道是否有人知道如何处理Mono<Void>中的错误。我正在使用MultipartFile的方法transferTo,它在成功时返回Mono.empty(),在其他情况下,它将异常包装在Mono.error()

public Mono<UploadedFile> create(final User user, final FilePart file) {
    final UploadedFile uploadedFile = new UploadedFile(file.filename(), user.getId());
    final Path path = Paths.get(fileUploadConfig.getPath(), uploadedFile.getId());

    file.transferTo(path);

    uploadedFile.setFilePath(path.toString());
    return repo.save(uploadedFile);
}

我只想在transferTo成功结束的情况下保存UploadedFile。但我不能使用map/flatMap,因为空的Mono显然不会发出值onErrorResume只接受具有相同类型(Void)的Mono


共 (1) 个答案

  1. # 1 楼答案

    嗨,试着像这样链接你的运营商:

        ...
        return Mono.just(file)
            .map(f -> f.transferTo(path))
            .then(Mono.just(uploadedFile))
            .flatMap(uF -> {
                uF.setFilePath(path.toString());
                return repo.save(uF)
            });
    }
    

    如果您的传输到将成功完成,它将调用然后调用操作符

    另外,如果我没有弄错,FilePart正在阻塞,请尽量避免