如何在minio中上传multipart.filepart

w51jfk4q  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(688)

我正在从事一个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的官方网站上没有任何关于它的文件!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题