Google cloud storage 如何通过Java客户端将元数据上传到Google云存储?

Google cloud storage 如何通过Java客户端将元数据上传到Google云存储?,google-cloud-storage,Google Cloud Storage,看起来PHP客户端允许这样做: 在Java客户端(1.35.0版)上,我还没有找到一次性上传内容并设置其自定义元数据的方法。有两种写入bucket的方法:通过bucket对象和(绕过它)通过storage对象 bucket API似乎不允许提供元数据(blob仅通过名称作为字符串标识) 相反,存储API允许传递自定义元数据: val sto: Storage = StorageOptions.getDefaultInstance.getService() val meta: Map[String

看起来PHP客户端允许这样做:


在Java客户端(1.35.0版)上,我还没有找到一次性上传内容并设置其自定义元数据的方法。

有两种写入bucket的方法:通过bucket对象和(绕过它)通过storage对象

bucket API似乎不允许提供元数据(blob仅通过名称作为字符串标识)

相反,存储API允许传递自定义元数据:

val sto: Storage = StorageOptions.getDefaultInstance.getService()
val meta: Map[String,String] = Map("a" -> "42", "b" -> "25")

val bId: BlobId = BlobId.of(bucketName, "abc2")
val bInfo: BlobInfo = BlobInfo.newBuilder(bId)
  .setMetadata( meta.asJava )
  .build()

sto.create(bInfo, "ABC!".getBytes(UTF_8))

我希望文档中的某个地方能更清楚地描述这一点,但也许StackOverflow中的条目就足够了。:)

以下是它在Java中的工作原理,至少是1.35.0版:

    public Blob uploadWithMetadata(Storage storage, Map<String, String> metadata, byte[] objectData) {
        BlobInfo blobInfo = BlobInfo
            .newBuilder("bucketName",  "objectName")
            .setMetadata(metadata)
            .build();
        return storage.create(blobInfo, objectData);
    }
public Blob uploadWithMetadata(存储、映射元数据、字节[]objectData){
BlobInfo BlobInfo=BlobInfo
.newBuilder(“bucketName”、“objectName”)
.setMetadata(元数据)
.build();
返回storage.create(blobInfo,objectData);
}
对于客户端版本1.109.1,bucket API仍然不允许设置自定义元数据

    public Blob uploadWithMetadata(Storage storage, Map<String, String> metadata, byte[] objectData) {
        BlobInfo blobInfo = BlobInfo
            .newBuilder("bucketName",  "objectName")
            .setMetadata(metadata)
            .build();
        return storage.create(blobInfo, objectData);
    }