我正在从事一个SpringWebFlux项目,其端点如下:
@PostMapping("/api/2")
public String uploadMono2(@RequestPart("files") FilePart filePart) throws Exception{
MinioClient minioClient = bigSpaceService.getMinIoClient();
filePart.content().collect(InputStreamCollector::new, (t, dataBuffer) -> t.collectInputStream(dataBuffer.asInputStream())).flatMap(inputStreamCollector -> {
try {
minioClient.putObject(
PutObjectArgs.builder().bucket("anka").object(filePart.filename()).stream(inputStreamCollector.getInputStream(), inputStreamCollector.getInputStream().available(), -1).build());
} catch (Exception e) {
e.printStackTrace();
}
return Mono.just("OK");
});
return null;
}
因为minio sdk的putobject()方法,我必须发送输入流以上载文件。为了将filepart转换为inputstream,我使用了以下方法:
public class InputStreamCollector {
private InputStream is;
public void collectInputStream(InputStream is) {
if (this.is == null) this.is = is;
this.is = new SequenceInputStream(this.is, is);
}
public InputStream getInputStream() {
return this.is;
}
}
使用这个方法filepart.content(),它将通量转换发送给inputstram,但只有一小部分是不完整的。
有没有标准的方法可以用sdk将webflux数据上传到minio?在minio的官方网站上没有任何关于它的文件!
暂无答案!
目前还没有任何答案,快来回答吧!