我正在尝试使用jClouds Blobstore API将文件以块的形式上传到openstack-swift。以下是我用来上传名为dom4j-1.6.1.jar的文件的代码片段。
blobStore.putBlob(“jclouds-example”,blob)确实有效,但是如果我将multipart(将文件块并上传到片段中)添加到方法中,那么我会得到NullPointerException:Null partETag。
ByteSource payload = Files.asByteSource(tempFile);
Blob blob = blobStore.blobBuilder(objectName)
.payload(payload)
.contentDisposition("attachment; filename=dom4j-1.6.1.jar")
.contentMD5(payload.hash(Hashing.md5()))
.contentLength(payload.size())
.contentType(MediaType.OCTET_STREAM.toString())
.build();
System.out.println(blob.getMetadata().getName());
// Upload the Blob
String eTag = blobStore.putBlob("jclouds-example", blob, multipart());
BTW,jclouds目前的稳定版本1.9.2不支持openstack-swift分段上传,所以我使用了他们的每晚构建版本2.0.0,这似乎支持分块上传,但不幸的是我得到空指针异常。 Anyhelp非常感谢。