我使用java Jclouds上传到OpenStack Swift内的容器,上传在root上正常,但是当我传递路径(包含文件夹然后文件)时,文件上传但也创建具有相同文件名的另一个文件夹。原始文件名是 8mb.bin
代码是:
try {
ByteSource fileBytes = Files.asByteSource(file);
File file = new File(filePath);
String name = "test/test2/" + file.getName();
Blob blob = blobStore.blobBuilder(name)
.userMetadata(ImmutableMap.of("ContentType", contentType, "test", String.valueOf(test)))
.payload(fileBytes)
.contentLength(file.length())
.contentType(contentType)
.build();
///sednig the request
blobStore.putBlob(ContainerName, blob, multipart());
return contentLength;
}
文件夹8mb.bin
包含其中的路径/slo/1522766773.076000/8200000/33554432
,然后是名为 00000000 的文件,其大小与原始文件大小相同。
如何解决这个问题?
由于
答案 0 :(得分:1)
jclouds使用Static Large Objects实现Swift multipart。这具有以下限制:部件存在于与清单相同的命名空间中,并且修改或删除部件使清单无效。 JCLOUDS-1285建议将部件放在另一个容器中以清理对象列表,尽管这需要一些额外的逻辑来删除和覆盖。