Java 使用路径上载到OpenStack多部分
我使用java Jclouds上传到OpenStack Swift中的一个容器中,在根目录上的上传进行得很好,但是当我传递一个路径(包含文件夹,然后是文件)时,该文件被上传,但也创建了另一个与该文件同名的文件夹。原始文件名为8mb.bin 代码是:Java 使用路径上载到OpenStack多部分,java,openstack-swift,jclouds,Java,Openstack Swift,Jclouds,我使用java Jclouds上传到OpenStack Swift中的一个容器中,在根目录上的上传进行得很好,但是当我传递一个路径(包含文件夹,然后是文件)时,该文件被上传,但也创建了另一个与该文件同名的文件夹。原始文件名为8mb.bin 代码是: try { ByteSource fileBytes = Files.asByteSource(file); File file = new File(filePath); String name = "test/test2/
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的文件,其大小与原始文件大小相同
如何解决这个问题
感谢jclouds使用实现了Swift多部分。这有一个限制,即部分与清单存在于同一命名空间中,修改或删除这些部分会使清单无效。建议将部件放在另一个容器中以清理对象列表,尽管这需要一些额外的逻辑来进行删除和覆盖。jclouds使用实现Swift多部件。这有一个限制,即部分与清单存在于同一命名空间中,修改或删除这些部分会使清单无效。建议将部件放在另一个容器中以清理对象列表,尽管这需要一些额外的逻辑来进行删除和覆盖