PHP客户端似乎允许这样做:https://github.com/GoogleCloudPlatform/google-cloud-php/issues/626
在Java客户端(1.35.0版)上,我还没有找到一次性上传内容和设置其自定义元数据的方法。
答案 0 :(得分:1)
有两种写入存储桶的方法:通过存储桶对象和(绕过存储桶)对象通过存储对象。
存储桶API似乎不允许提供元数据(blob仅通过其名称标识为字符串)。
val sto: Storage = StorageOptions.getDefaultInstance.getService()
val bucket: Bucket = sto.get(bucketName)
bucket.create("abc", "ABC!".getBytes(UTF_8))
相反,存储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中的条目就足够了。 :)
答案 1 :(得分:0)
从1.35.0版开始,这就是它在Java中的工作方式:
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);
}
对于客户端版本1.109.1,存储区API仍然不允许设置自定义元数据。