更新时间:2024-09-29 GMT+08:00

修改对象元数据

功能介绍

用户可以通过本接口添加、修改或删除桶中已经上传的对象的元数据。

请求消息样式

1
2
3
4
5
6
7
8
PUT /ObjectName?metadata HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Content-Type: application/xml 
Content-Length: length
Authorization: authorization
Date: date
<Optional Additional Header> 
<object Content>

请求消息参数

表1 请求消息参数

参数名称

参数类型

是否必选

描述

versionId

String

参数解释:

对象的版本号。

约束限制:

取值范围:

长度为32的字符串。

默认取值:

请求消息头

OBS支持在修改对象元数据的请求里携带HTTP协议规定的6个请求头:Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type、Content-Language,OBS会直接将这些头域的值保存在对象元数据中,在下载对象或者HEAD对象的时候,这些保存的值将会被设置到对应的HTTP头域中返回客户端。

表2 请求消息头

消息头名称

消息头类型

是否必选

描述

x-obs-metadata-directive

String

参数解释:

元数据操作指示符。

约束限制:

取值范围:

  • REPLACE_NEW:表示对于已经存在值的元数据进行替换,不存在值的元数据进行赋值,未指定的元数据保持不变(自定义头域作替换处理)。
  • REPLACE:表示使用当前请求中携带的头域完整替换,未指定的元数据(本表中除x-obs-storage-class的其它元数据)会被删除。

默认取值:

Cache-Control

String

参数解释:

指定对象被下载时的网页的缓存行为。

约束限制:

取值范围:

参见HTTP标准头域Cache-Control的取值。

默认取值:

Content-Disposition

String

参数解释:

指定对象被下载时的名称。

约束限制:

取值范围:

参见HTTP标准头域Content-Disposition的取值。

默认取值:

Content-Encoding

String

参数解释:

指定对象被下载时的内容编码格式。

约束限制:

取值范围:

参见HTTP标准头域Content-Encoding的取值。

默认取值:

Content-Language

String

参数解释:

指定对象被下载时的内容语言格式。

约束限制:

取值范围:

参见HTTP标准头域Content-Language的取值。

默认取值:

Content-Type

String

参数解释:

指定对象被下载时的文件类型。

约束限制:

取值范围:

参见HTTP标准头域Content-Type的取值。

默认取值:

Expires

String

参数解释:

指定对象被下载时的网页的缓存过期时间。

注意:

此参数不用于设置对象过期时间,设置过期时间的参数请使用x-obs-expires。

约束限制:

取值范围:

参见HTTP标准头域Expires的取值。

默认取值:

x-obs-website-redirect-location

String

参数解释:

当桶设置了Website配置,可以将获取这个对象的请求重定向到桶内另一个对象或一个外部的URL。

例如,重定向请求到桶内另一对象:

x-obs-website-redirect-location:/anotherPage.html

或重定向请求到一个外部URL:

x-obs-website-redirect-location:http://www.example.com/

约束限制:

必须以“/”、“http://”或“https://”开头,长度不超过2KB。

取值范围:

默认取值:

x-obs-storage-class

String

参数解释:

指定对象的存储类型。

示例:x-obs-storage-class: STANDARD

约束限制:

指定对象的存储类型时请注意大小写敏感。

取值范围:

  • STANDARD
  • WARM
  • COLD
  • DEEP_ARCHIVE

默认取值:

x-obs-meta-*

String

参数解释:

对象的自定义元数据。OBS支持用户使用以“x-obs-meta-”开头的消息头来加入自定义的元数据,以便对对象进行自定义管理。当用户获取此对象或查询此对象元数据时,加入的自定义元数据将会在返回的消息头中出现。

示例:x-obs-meta-test: test metadata

约束限制:

  • 所有自定义元数据大小的总和不超过8K。单个自定义元数据大小的计算方式为:每个键和值的UTF-8 编码中的字节总数。
  • 自定义元数据的key值不区分大小写,OBS统一转为小写进行存储。value值区分大小写。
  • 自定义元数据key-value对都必须符合US-ASCII。如果一定要使用非ASCII码或不可识别字符,需要客户端自行做编解码处理,可以采用URL编码或者Base64编码,服务端不会做解码处理。例如x-obs-meta-中文:中文经URL编码后发送,“中文”的URL编码为:%E4%B8%AD%E6%96%87,则响应为x-obs-meta-%E4%B8%AD%E6%96%87: %E4%B8%AD%E6%96%87

取值范围:

默认取值:

x-obs-expires

Integer

参数解释:

指定对象过期时间,单位是天。过期之后对象会被自动删除。

示例:x-obs-expires:3

约束限制:

设置的天数计算出的过期时间不能早于当前时间,如10天前上传的对象,不能设置小于10的值。

取值范围:

大于0的整数值。

默认取值:

请求消息元素

该请求消息中不使用消息元素。

响应消息样式

1
2
3
4
5
HTTP/1.1 status_code
Date: date
Content-Length: length
Etag: etag
Last-Modified: time

响应消息头

表3 附加响应消息头

消息头名称

消息头类型

描述

x-obs-metadata-directive

String

参数解释:

元数据操作指示符。

取值范围:

  • REPLACE_NEW:表示对于已经存在值的元数据进行替换,不存在值的元数据进行赋值,未指定的元数据保持不变(自定义头域作替换处理)。
  • REPLACE:表示使用当前请求中携带的头域完整替换,未指定的元数据(本表中除x-obs-storage-class的其它元数据)会被删除。

默认取值:

Cache-Control

String

参数解释:

指定对象被下载时的网页的缓存行为。

约束限制:

如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

参见HTTP标准头域Cache-control的取值。

默认取值:

Content-Disposition

String

参数解释:

指定对象被下载时的名称。

约束限制:

如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

参见HTTP标准头域Content-Disposition的取值。

默认取值:

Content-Encoding

String

参数解释:

指定对象被下载时的内容编码格式。

约束限制:

如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

参见HTTP标准头域Content-Encoding的取值。

默认取值:

Content-Language

String

参数解释:

指定对象被下载时的内容语言格式。

约束限制:

如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

参见HTTP标准头域Content-Language的取值。

默认取值:

Expires

String

参数解释:

指定对象被下载时的网页的缓存过期时间。

约束限制:

如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

参见HTTP标准头域Expires的取值。

默认取值:

x-obs-website-redirect-location

String

参数解释:

当桶设置了Website配置,可以将获取这个对象的请求重定向到桶内另一个对象或一个外部的URL。

例如,重定向请求到桶内另一对象:

x-obs-website-redirect-location:/anotherPage.html

或重定向请求到一个外部URL:

x-obs-website-redirect-location:http://www.example.com/

约束限制:

  • 如果请求携带了此头域,那么响应的消息中应该包含此消息头。
  • 必须以“/”、“http://”或“https://”开头,长度不超过2KB。

取值范围:

默认取值:

x-obs-storage-class

String

参数解释:

指定对象的存储类型。

约束限制:

  • 如果请求携带了此头域,那么响应的消息中应该包含此消息头。
  • 指定对象的存储类型时请注意大小写敏感。

取值范围:

  • STANDARD
  • WARM
  • COLD
  • DEEP_ARCHIVE

默认取值:

x-obs-meta-*

String

参数解释:

对象的自定义元数据。OBS支持用户使用以“x-obs-meta-”开头的消息头来加入自定义的元数据,以便对对象进行自定义管理。当用户获取此对象或查询此对象元数据时,加入的自定义元数据将会在返回的消息头中出现。

约束限制:

  • 如果请求携带了此头域,那么响应的消息中应该包含此消息头。
  • 所有自定义元数据大小的总和不超过8K。单个自定义元数据大小的计算方式为:每个键和值的UTF-8 编码中的字节总数。
  • 自定义元数据的key值不区分大小写,OBS统一转为小写进行存储。value值区分大小写。
  • 自定义元数据key-value对都必须符合US-ASCII。如果一定要使用非ASCII码或不可识别字符,需要客户端自行做编解码处理,可以采用URL编码或者Base64编码,服务端不会做解码处理。例如x-obs-meta-中文:中文经URL编码后发送,“中文”的URL编码为:%E4%B8%AD%E6%96%87,则响应为x-obs-meta-%E4%B8%AD%E6%96%87: %E4%B8%AD%E6%96%87

取值范围:

默认取值:

x-obs-expires

Integer

参数解释:

对象过期时间,单位是天。

约束限制:

  • 设置的天数计算出的过期时间不能早于当前时间,如10天前上传的对象,不能设置小于10的值。
  • 如果请求携带了此头域,那么响应的消息中应该包含此消息头。

取值范围:

大于0的整数值。

默认取值:

响应消息元素

该请求的响应消息中不带消息元素。

错误响应消息

无特殊错误;所有错误已经包含在表2中。

请求示例:添加对象元数据

给对象object添加元数据:Content-Type:application/zip和x-obs-meta-test:meta。

1
2
3
4
5
6
7
8
9
PUT /object?metadata HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 14:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
x-obs-metadata-directive:REPLACE_NEW
Content-Type:application/zip
x-obs-meta-test:meta

响应示例:添加对象元数据

1
2
3
4
5
6
7
8
9
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3E4BB5905C41B6E65B6
Accept-Ranges: bytes
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSD3nAiTaBoeyt9oHp9vTYtXnLDmwV6D
Date: WED, 01 Jul 2015 04:19:21 GMT
Content-Length: 0
x-obs-metadata-directive:REPLACE_NEW
x-obs-meta-test:meta

请求示例:修改对象元数据

对象object已存在元数据x-obs-meta-test:testmeta,且x-obs-storage-class为WARM,将对象object的元数据x-obs-meta-test修改为newmeta,x-obs-storage-class修改为COLD。

1
2
3
4
5
6
7
8
9
PUT /object?metadata HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 14:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
x-obs-metadata-directive:REPLACE_NEW
x-obs-meta-test:newmeta
x-obs-storage-class:COLD

响应示例:修改对象元数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3E4BB5905C41B6E65B6
Accept-Ranges: bytes
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSD3nAiTaBoeyt9oHp9vTYtXnLDmwV6D
Date: WED, 01 Jul 2015 04:19:21 GMT
Content-Length: 0
x-obs-metadata-directive:REPLACE_NEW
x-obs-meta-test:newmeta
x-obs-storage-class:COLD

请求示例:删除对象元数据

对象object已存在元数据x-obs-meta-test:newmeta,Content-Type:application/zip,删除元数据x-obs-meta-test。

1
2
3
4
5
6
7
8
PUT /object?metadata HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 14:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
x-obs-metadata-directive:REPLACE
Content-Type:application/zip

响应示例:删除对象元数据

1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3E4BB5905C41B6E65B6
Accept-Ranges: bytes
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSD3nAiTaBoeyt9oHp9vTYtXnLDmwV6D
Date: WED, 01 Jul 2015 04:19:21 GMT
Content-Length: 0
x-obs-metadata-directive:REPLACE