将非常大的文件上传到 Swift 容器

Upload Very Large File to Swift Container

我正在使用 jclouds java SDK 上传到 Swift 容器我看到我在其中作为多部分上传的代码,我已经使用代码作为输入流作为多部分上传

    try (ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes)) {
                    ///input here is InputStream not ByteSource
                    Payload payload = Payloads.newInputStreamPayload(inputStream);
                    Blob blob = blobStore.blobBuilder(path).payload(payload).build();
                    ///sednig the request
                    blobStore.putBlob(ContainerName, blob, multipart());
                    System.out.println(String.format("End upload all Parts, parts number=%s, part size=%s", strPartsCount, strPartSize));  
}

但我有一个情况,我有一个非常大的文件,它的输入是一个字节矩阵,解决方案很简单,将相同的代码放在 for loop 中,每个循环输入是矩阵的索引(这是一个字节数组)

但问题是,OpenStack 会考虑每个循环(分段上传)都链接到前一部分吗?怎么做? 你可以在 multipart

中说 multipart

谢谢

jclouds 提供两种选择:

1) 调用各个多部分方法,例如 initiateMultipartUploaduploadMultipartPartcompleteMultipartUpload.

2) 创建一个 InputStreamByteSource 有效负载,将各个部分连接起来,例如SequenceInputStreamByteSource.concat.

请注意,使用 ByteSource.wrap(bytes) 而不是 ByteArrayInputStream(bytes) 可使有效载荷可重复,jclouds 将在出现网络错误时重试。