处理 Spring Webflux MultipartFile.transferTo 中的错误
Handle error in Spring Webflux MultipartFile.transferTo
我正在使用 spring-webflux,我想知道是否有人知道如何处理 Mono<Void>
中的错误。我正在使用 MultipartFile
的方法 transferTo
,它在成功时 returns 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);
}
我想保存 UploadedFile
以防万一 transferTo
成功结束。但是我不能使用 map/flatMap 因为空的 Mono 显然不会发出值。 onErrorResume
只接受相同类型 (Void
) 的 Mono
。
嗨,试着像这样链接你的运算符:
...
return Mono.just(file)
.map(f -> f.transferTo(path))
.then(Mono.just(uploadedFile))
.flatMap(uF -> {
uF.setFilePath(path.toString());
return repo.save(uF)
});
}
如果您的 transferTo 将成功完成,它会调用 then 运算符。
P.S。如果我没记错 FilePart 正在阻塞,请尽量避免它。
我正在使用 spring-webflux,我想知道是否有人知道如何处理 Mono<Void>
中的错误。我正在使用 MultipartFile
的方法 transferTo
,它在成功时 returns 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);
}
我想保存 UploadedFile
以防万一 transferTo
成功结束。但是我不能使用 map/flatMap 因为空的 Mono 显然不会发出值。 onErrorResume
只接受相同类型 (Void
) 的 Mono
。
嗨,试着像这样链接你的运算符:
...
return Mono.just(file)
.map(f -> f.transferTo(path))
.then(Mono.just(uploadedFile))
.flatMap(uF -> {
uF.setFilePath(path.toString());
return repo.save(uF)
});
}
如果您的 transferTo 将成功完成,它会调用 then 运算符。
P.S。如果我没记错 FilePart 正在阻塞,请尽量避免它。