Google cloud storage 如何通过Java客户端将元数据上传到Google云存储?
看起来PHP客户端允许这样做: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
在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);
}