Content-Encoding标头不会从Google Storage的对象元数据中删除

时间:2013-08-23 13:32:01

标签: encoding metadata gzip google-cloud-storage

我正在尝试在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”元数据头来删除它时。它成功更新了元数据,但其元数据详细信息显示了Content-Encoding标头。

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

任何人都可以帮助我,如果我将Content-Encoding添加到对象中,怎么能删除它。

案例B: 如果我添加 Content-Encoding with gzip 值,则表示不添加Content-Encoding。

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

2 个答案:

答案 0 :(得分:2)

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

案例A:确实存在一个禁止删除Content-Encoding元数据条目的错误,这可能就是您所看到的内容。它正在进行中,我将在解决时更新。 编辑:现在已修复。

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

答案 1 :(得分:0)

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

我认为Google云端存储非常智能,不会让客户端的图像被解压缩,因此缺少Content-Encoding: gzip并且存在x-goog-stored-content-encoding: gzip

实际上,图片并非旨在被gzip 123 - 但实际上是自我优化的({{ 3}},1