更新时间:2024-03-05 GMT+08:00

修改对象元数据

功能介绍

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

请求消息样式

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

请求消息参数

表1 请求消息参数

参数名称

描述

是否必选

versionId

对象的版本号。

类型:String

请求消息头

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

表2 请求消息头

消息头名称

描述

是否必选

x-obs-metadata-directive

元数据操作指示符。

取值为REPLACE_NEW或REPLACE。

REPLACE_NEW表示:对于已经存在值的元数据进行替换,不存在值的元数据进行赋值,未指定的元数据保持不变(备注:自定义头域作替换处理)。

REPLACE表示:使用当前请求中携带的头域完整替换,未指定的元数据(本表中除x-obs-storage-class的其它元数据)会被删除。

类型:String

Cache-Control

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

类型:String

Content-Disposition

指定Object被下载时的名称。

类型:String

Content-Encoding

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

类型:String

Content-Language

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

类型:String

Content-Type

Object文件类型。

类型:String

Expires

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

类型:String

x-obs-website-redirect-location

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

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

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

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

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

类型:String

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

x-obs-storage-class

指定对象的存储类型。

类型:String

说明:存储类型有3种:STANDARD(标准存储)、WARM(温存储)、COLD(冷存储)。因此这里可配置的值有:STANDARD、WARM、COLD,注意大小写敏感。

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

x-obs-meta-*

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

类型:String

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

请求消息元素

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

响应消息样式

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

元数据操作指示符。

取值为REPLACE_NEW或REPLACE。

类型:String

Cache-Control

指定Object被下载时的网页的缓存行为。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

Content-Disposition

指定Object被下载时的名称。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

Content-Encoding

指定Object被下载时的内容编码格式。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

Content-Language

指定Object被下载时的内容语言格式。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

Expires

指定Object被下载时的网页的缓存过期时间。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

x-obs-website-redirect-location

当桶设置了Website配置,可以将获取这个对象的请求重定向到桶内另一个对象或一个外部的URL。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

x-obs-storage-class

指定对象的存储类型。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

x-obs-meta-*

用户自定义的元数据,以便对对象进行自定义管理。如果请求携带了此头域,那么响应的消息中应该包含此消息头。

类型:String

响应消息元素

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

错误响应消息

无特殊错误;所有错误已经包含在表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.example.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.example.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.example.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