使用元数据上传到 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();