1

我正在尝试为 Google 存储对象上的元数据数据添加功能。我可以添加元数据,但是在更新元数据(修改值以及删除现有元数据)时我遇到了问题。

当我上传像 mydata.txt 这样的文件时,成功上传后 - 它具有以下元数据默认值 -

{ETag="0b1c673f22f98d9862a8198741f0d364",
 hash=md5=CxxnPyL5jZhiqBmHQfDTZA==,
 Content-Length=85515,
 Expires=Fri, 23 Aug 2013 10:08:56 GMT,
 Last-Modified=Thu Aug 22 15:27:58 IST 2013,
 **stored-content-encoding=identity**,
 Cache-Control=private,
 max-age=0,
 Date=Fri Aug 23 15:38:56 IST 2013,
 metageneration=1,
 stored-content-length=85515,
 generation=1377165478501000,
 Content-Type=plain/txt}

案例 A: 然后我添加了Content-Encoding=utf8并且它也成功更新并显示在元数据列表中。

但是,当我尝试通过从要更新的元数据列表中删除“内容编码”元数据标头来删除它时。它成功更新了元数据,但其元数据详细信息显示了 Content-Encoding 标头。

当我在存储桶中上传对象的新副本时,我观察到 Google 存储支持默认元数据,然后我在其元数据列表中看到了stored-content-encoding=identity,我没有在新文件中添加它。

任何人都可以帮助我,如果我将内容编码添加到对象中,我该如何删除它。

案例 B: 如果我添加带有 gzip值的 Content-Encoding,那么它不会添加 Content-Encoding。

参考: https ://developers.google.com/storage/docs/reference-headers#contentencoding

4

2 回答 2

2

您的问题并不完全清楚(您如何上传或设置元数据开始?您说它更新成功但仍然失败?),但我会尝试回答。

案例 A:确实存在阻止删除Content-Encoding元数据条目的错误,这可能就是您所看到的。它正在处理中,当它解决时我会在这里更新。编辑:这已经被修复了。

案例 B:请注意,特定请求的传输内容编码实际上是针对每个请求进行协商的(例如,代理服务器可能会沿路由更改)。特别是,如果客户端请求不包含Accept-Encoding: gzip标头,则服务器可以删除存储的对象的 gzip 编码(即,它解压缩对象)。标x-goog-stored-content-encoding头指示存储在 Google Cloud Storage 中的内容编码。我认为在这种情况下仍然会报告 gzip。

于 2013-08-27T21:39:03.947 回答
0

Content-Encoding: gzip就我而言,当上述案例 B 被复制时,我试图添加到 PNG/JPG 图像中。

我猜谷歌云存储足够聪明,不会让图像在客户端解压缩,因此缺少Content-Encoding: gzip和存在x-goog-stored-content-encoding: gzip.

实际上,图像并不打算被压缩1 , 2 , 3 - 但实际上优化了自己1 , 2

于 2016-03-14T19:23:54.623 回答