我正在尝试在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
答案 0 :(得分:2)
你的问题并不完全清楚(你如何上传或设置元数据?你说它成功更新但仍然失败?),但我会尝试回答它。
案例A:确实存在一个禁止删除Content-Encoding
元数据条目的错误,这可能就是您所看到的内容。它正在进行中,我将在解决时更新。 编辑:现在已修复。
案例B 请注意,特定请求的传输内容编码实际上是针对每个请求进行协商的(例如,路由中的代理服务器可能会对其进行更改)。特别地,如果客户端请求不包括Accept-Encoding: gzip
头,则服务器可以移除对象的存储的gzip编码(即,它解压缩对象)。 x-goog-stored-content-encoding
标头表示内容编码,因为它存储在Google云端存储中。我认为在这种情况下仍会报告gzip。
答案 1 :(得分:0)