首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在中创建对象后添加到用户元数据

在中创建对象后添加到用户元数据
EN

Stack Overflow用户
提问于 2014-09-13 22:08:01
回答 1查看 948关注 0票数 1

我想添加用户元数据,这些元数据是在流上传时计算出来的。

在文件上传过程中,我从Google云存储客户端内部使用Servlet

我唯一能想出和尝试的解决办法是不能令人满意的,原因有几点。

  1. 在内存中缓冲流,在流被缓冲时计算元数据,然后在完全读取后将流写到Cloud。
  2. 将流写入桶并计算元数据。然后从临时桶中读取对象,并使用计算出的元数据将其写入其最终位置。
  3. 预先计算客户端上的元数据并随上传一起发送。

为什么这些是不可接受的:

  1. 不适用于大型对象,其中一些将是如此。
  2. 如果上传了大量的对象,将会花费大量的钱。
  3. 不能信任客户,有些客户不能计算出我需要的一些东西。

有什么方法可以在事实发生后更新对象的元数据吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-14 04:57:37

您可能正在使用用于AppEngine的客户端库。这个库对AppEngine用户很好,但它只提供的一部分功能。据我所知,它不会碰巧支持更新现有对象的元数据。不过,绝对支持这一点。

您可以使用Google客户端库,它公开了Google的JSON。使用这个库,您将能够使用storage.objects.update方法或storage.objects.patch方法,这两种方法都可以更新元数据(不同的是,update替换了已经存在的对象的任何属性,而修补程序只是更改指定的字段)。代码应该如下所示:

代码语言:javascript
运行
复制
StorageObject objectMetadata = new StorageObject();
    .setName("OBJECT_NAME")
    .setMetadata(ImmutableMap.of("key1", "value1", "key2", "value2"));
Storage.Objects.Patch patchObject = storage.objects().patch("mybucket", objectMetadata);
patchObject.execute();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25828200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档