使用元数据上传到 Swift 容器
Uploading to Swift Container with Metadata
我使用 Java 和 jclouds SDK 将文件作为多部分上传到 Swift 容器,上传正常,但我需要向文件添加元数据,我注意到有一个名为 getContentMetadata()
的函数可以获取元数据,例如内容长度和类型,但我无法添加自定义元数据,尝试将 put 选项转换为元数据,但没有生成错误,但是当我 运行代码,代码在这里
try {
PutOptions putOptions = PutOptions.Builder.metadata(ImmutableMap.of("test", String.valueOf(strValue)));
ByteSource fileBytes = Files.asByteSource(file);
Payload payload = Payloads.newByteSourcePayload(fileBytes);
///setting the header for the request
payload.getContentMetadata().setContentLength(file.length());
payload.getContentMetadata().setContentType(contentType);
payload.setContentMetadata((MutableContentMetadata) putOptions);
Blob blob = blobStore.blobBuilder(file.getName()).payload(payload).build();
///sednig the request
blobStore.putBlob("testContainer", blob, multipart());
return contentLength;
}
第 payload.setContentMetadata((MutableContentMetadata) putOptions);
行产生了异常
知道如何解决这个问题吗?
谢谢
您应该通过 BlobBuilder
设置元数据,例如
Blob blob = blobStore.blobBuilder(file.getName())
.payload(fileBytes)
.contentLength(file.length()
.contentType(contentType)
.userMetadata(ImmutableMap.of("test", String.valueOf(strValue)))
.build();
我使用 Java 和 jclouds SDK 将文件作为多部分上传到 Swift 容器,上传正常,但我需要向文件添加元数据,我注意到有一个名为 getContentMetadata()
的函数可以获取元数据,例如内容长度和类型,但我无法添加自定义元数据,尝试将 put 选项转换为元数据,但没有生成错误,但是当我 运行代码,代码在这里
try {
PutOptions putOptions = PutOptions.Builder.metadata(ImmutableMap.of("test", String.valueOf(strValue)));
ByteSource fileBytes = Files.asByteSource(file);
Payload payload = Payloads.newByteSourcePayload(fileBytes);
///setting the header for the request
payload.getContentMetadata().setContentLength(file.length());
payload.getContentMetadata().setContentType(contentType);
payload.setContentMetadata((MutableContentMetadata) putOptions);
Blob blob = blobStore.blobBuilder(file.getName()).payload(payload).build();
///sednig the request
blobStore.putBlob("testContainer", blob, multipart());
return contentLength;
}
第 payload.setContentMetadata((MutableContentMetadata) putOptions);
行产生了异常
知道如何解决这个问题吗? 谢谢
您应该通过 BlobBuilder
设置元数据,例如
Blob blob = blobStore.blobBuilder(file.getName())
.payload(fileBytes)
.contentLength(file.length()
.contentType(contentType)
.userMetadata(ImmutableMap.of("test", String.valueOf(strValue)))
.build();