I'm using spring-webflux and I wonder if someone knows how to handle error in Mono<Void>
. I'm using MultipartFile
's method transferTo
, which on success returns Mono.empty()
and in other cases it wraps exceptions in 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);
}
I want to save UploadedFile
only in case transferTo
ended successfully. But I can't use map/flatMap because empty Mono obviously doesn't emit value. onErrorResume
only accepts Mono
with same type (Void
).
transferTo
is blocking - you probably want to use anAsnychronousFileChannel
instead as in this example it is, unfortunately, more complicated than a simple method call. – Michael Berry