我使用jclouds java SDK上传到Swift Container我看到我上传为多部分的代码,我已经使用代码作为输入流上传为多部分
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会考虑每个循环(分段上传)是否与前一部分相关联?怎么做? 你可以在多部分中说出一个多部分
由于
答案 0 :(得分:1)
jclouds提供两种选择:
1)调用各个多部分方法,例如initiateMultipartUpload
,uploadMultipartPart
和completeMultipartUpload
。
2)创建一个InputStream
或ByteSource
个有效负载,用于连接各个部分,例如: SequenceInputStream
或ByteSource.concat
。
请注意,使用ByteSource.wrap(bytes)
代替ByteArrayInputStream(bytes)
会使有效负载重复,jcloud会重试网络错误。