华为云计算 云知识 获取对象内容GetObject
获取对象内容GetObject

 

接口说明

GET操作从 对象存储 下载对象。使用GET接口前,请确认必须拥有对象的READ权限。如果对象Owner向匿名用户授予READ访问权限,则可以在不使用鉴权头域的情况下访问该对象。

服务端加密

如果客户端的对象上传时,使用了客户提供的加密密钥进行服务端加密,当下载对象时,同样也必须在消息中提供密钥。

多版本

默认情况下,获取的是最新版本的对象。如果最新版本的对象是删除标记,则返回对象不存在。如果要获取指定版本的对象,请求可携带versionId消息参数。

归档存储对象

如果要下载的对象是归档存储类对象,由于对象存储在存档设备中,您必须先使用对象取回,然后才能下载该归档存储对象。对象处于不同的取回状态时,给出不同响应:如果对象已取回,下载对象成功时需要返回x-obs-restore头域指示取回失效时间。对未取回或正在取回的归档存储对象发送下载请求时,会返回错误403 Forbidden。

URL
GET  https://obs.cn-north-4.myhuaweicloud.com/{object_key} 
请求参数
名称 类型 IN 必选 描述
Authorization
 
string header

请求消息中可带的签名信息。

Date
 
string header

请求发起端的日期和时间,例如:Wed, 27 Jun 2018 13:39:15 +0000。 默认值:无。 条件:如果消息头中带了x-obs-date字段,则可以不带该字段,其他情况下必选。

Range
 
string header

获取对象时,获取在Range范围内的对象内容。如果Range不合法则忽略此字段获取整个对象。

Range是一个范围,它的起始值最小为0,最大为对象长度减1。Range范围的起始值为必填项,如果Range只包含起始值,表示获取起始值到对象长度减1这个区间的对象内容。

携带Range头域后,响应消息的ETag仍是对象的ETag,而不是Range范围内对象的ETag。

bytes=byte_range

示例1:bytes=0-4 示例2:bytes=1024 示例3:bytes=10-20,30-40(表示多个区间)

If-Modified-Since
 
string header

如果对象在请求中指定的时间之后有修改,则返回对象内容;否则的话返回304(not modified)。

类型:符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。

If-Unmodified-Since
 
string header

如果对象在请求中指定的时间之后没有修改,则返回对象内容;否则的话返回412(precondition failed)。

类型:符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。

If-Match
 
string header

如果对象的ETag和请求中指定的ETag相同,则返回对象内容,否则的话返回412(precondition failed)。

(ETag值,例:0f64741bf7cb1089e988e4585d0d3434。)

If-None-Match
 
string header

如果对象的ETag和请求中指定的ETag不相同,则返回对象内容,否则的话返回304(not modified)。

(ETag值,例:0f64741bf7cb1089e988e4585d0d3434。)

x-obs-server-side-encryption-customer-algorithm
 
string header

SSE-C方式下使用该头域,该头域表示加密使用的算法。

示例:x-obs-server-side-encryption-customer-algorithm:AES256

约束:需要和x-obs-server-side-encryption-customer-key, x-obs-server-side-encryption-customer-key-MD5一起使用。

x-obs-server-side-encryption-customer-key
 
string header

SSE-C方式下使用该头域,该头域表示加密使用的密钥。该密钥用于解密对象。

示例:x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw=

约束:该头域由256-bit的密钥经过base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key-MD5一起使用。

x-obs-server-side-encryption-customer-key-MD5
 
string header

SSE-C方式下使用该头域,该头域表示加密使用的密钥的MD5值。MD5值用于验证密钥传输过程中没有出错。

示例:x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

约束:该头域由密钥的128-bit MD5值经过base64-encoded得到,需要和x-obs-server-side-encryption-customer-algorithm,x-obs-server-side-encryption-customer-key一起使用。

object_key
 
string path

通过此请求下载的对象名称。

bucket_name
 
string query

桶名称

response-content-type
 
string query

重写响应中的Content-Type头。

response-content-language
 
string query

重写响应中的Content-Language头。

response-expires
 
string query

重写响应中的Expires头。

response-cache-control
 
string query

重写响应中的Cache-Control头。

response-content-disposition
 
string query

重写响应中的Content-Disposition头。

示例:response-content-disposition=attachment; filename*=utf-8''name1

下载对象重命名为“name1”,如果name1中存在中文,需要将中文进行URL编码。

response-content-encoding
 
string query

重写响应中的Content-Encoding头。

versionId
 
string query

指定获取对象的版本号。

x-image-process
 
string query

图片处理服务。

示例:

命令方式:x-image-process=image/commands

样式方式:x-image-process=style/stylename

详见《图片处理特性指南》

attname
 
string query

重写响应中的Content-Disposition头。

示例:attname=name1

下载对象重命名为“name1”。

返回参数
返回码: 200

成功响应消息。

名称 类型 必选 描述
Content-Length
 
string

响应消息体的字节长度。

Connection
 
string

指明与服务器的连接是长连接还是短连接。

Date
 
string

OBS系统响应的时间。

ETag
 
string

对象的base64编码的128位MD5摘要。ETag是对象内容的唯一标识,可以通过该值识别对象内容是否有变化。比如上传对象时ETag为A,下载对象时ETag为B,则说明对象内容发生了变化。实际的ETag是对象的哈希值。ETag只反映变化的内容,而不是其元数据。上传的对象或拷贝操作创建的对象,通过MD5加密后都有唯一的ETag。如果通过多段上传对象,则无论加密方法如何,MD5会拆分ETag,此类情况ETag就不是MD5的摘要。

x-obs-id-2
 
string

帮助定位问题的特殊符号。

x-obs-request-id
 
string

由OBS创建来唯一确定本次请求的值,可以通过该值来定位问题。

x-obs-expiration
 
string

当对象单独设置了对象lifecycle,过期时间以对象lifecycle为准,该消息头用expiry-date描述对象的详细过期信息;如果对象没有设置对象lifecycle,设置了桶级别lifecycle,过期时间以桶级别lifecycle为准,该消息头用expiry-date和rule-id两个键值对描述对象的详细过期信息;否则不显示该头域。

x-obs-website-redirect-location
 
string

当桶设置了Website配置,就可以设置对象元数据的这个属性,Website接入点返回301重定向响应,将请求重定向到该属性指定的桶内的另一个对象或外部的URL。

x-obs-delete-marker
 
boolean

标识对象是否是删除标记。如果不是,则响应中不会出现该消息头。

x-obs-version-id
 
string

对象的版本号。如果该对象无版本号,则响应中不会出现该消息头。

x-obs-server-side-encryption
 
string

如果服务端加密是SSE-KMS方式,响应包含该头域。

x-obs-server-side-encryption-kms-key-id
 
string

如果服务端加密是SSE-KMS方式,响应包含该头域,该头域表示主密钥。 格式为: regionID:domainID(租户ID):key/key_id

其中regionID是使用密钥所属region的ID;domainID是使用密钥所属租户的租户ID;key_id是本次加密使用的密钥ID。

x-obs-server-side-encryption-customer-algorithm
 
string

如果服务端加密是SSE-C方式,响应包含该头域,该头域表示解密使用的算法。

x-obs-server-side-encryption-customer-key-MD5
 
string

如果服务端加密是SSE-C方式,响应包含该头域,该头域表示解密使用的密钥的MD5值。

x-obs-object-type
 
string

对象为非Normal对象时,会返回此头域,可取值为:Appendable。

x-obs-next-append-position
 
integer

对象为Appendable对象时,会返回此头域。

名称 类型 必选 描述
-
 
file  
返回码: 400

请求失败响应消息。

名称 类型 必选 描述
Code
 
string

错误响应消息体XML中错误响应对应的HTTP消息返回码,具体的错误码请参见错误码-表2

Message
 
string

错误响应消息体XML中具体错误更全面、详细的英文解释,具体的错误消息请参见错误码-表2

RequestId
 
string

本次错误请求的请求ID,用于错误定位。

HostId
 
string

返回该消息的服务端ID。

Resource
 
string

该错误相关的桶或对象资源。

请求示例
示例 1

下载整个对象

 
"GET /object01 HTTP/1.1"
 
"GET /object01 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 04:24:33 GMT\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:Nxt SMS 0jaVxlLnxlO9awaMTn47s=\n"
示例 2

指定Range下载对象(下载对象单个区间内容)

 
"GET /object01 HTTP/1.1"
 
"GET /object01 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: Mon, 14 Sep 2020 09:59:04 GMT\nRange:bytes=20-30\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:mNPLWQMDWg30PTkAWiqJaLl3ALg=\n"
示例 3

指定Range下载对象(下载对象多个区间内容)

 
"GET /object01 HTTP/1.1"
 
"GET /object01 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: Mon, 14 Sep 2020 10:02:43 GMT\nRange:bytes=20-30,40-50\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:ZwM7Vk2d7sD9o8zRsRKehgKQDkk=\n"
示例 4

下载缩放图片

 
"GET /example.jpg?x-image-process=image/resize,w_100 HTTP/1.1"
 
"GET /example.jpg?x-image-process=image/resize,w_100 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 04:20:51 GMT\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:9Nsx45WjaVxlLnxlO9awasXn83N=\n"
示例 5

如果对象Etag值匹配则下载该对象

 
"GET /object01 HTTP/1.1"
 
"GET /object01 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 04:24:33 GMT\nIf-Match: 682e760adb130c60c120da3e333a8b09\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=\n"
示例 6

在URL中携带签名下载对象

 
"GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1"
 
"GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: Fri, 27 Jul 2018 10:52:31 GMT\n"
示例 7

下载对象并重命名,使用response-content-disposition参数实现

 
"GET /object01?response-content-disposition=attachment; filename*=utf-8'name1 HTTP/1.1"
 
"GET /object01?response-content-disposition=attachment; filename*=utf-8''name1 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 04:24:33 GMT\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=\n"
示例 8

下载对象并重命名,使用attname参数实现

 
"GET /object01?attname=name1 HTTP/1.1"
 
"GET /object01?attname=name1 HTTP/1.1\nUser-Agent: curl/7.29.0\nHost: examplebucket.obs.cn-north-4.myhuaweicloud.com\nAccept: */*\nDate: WED, 01 Jul 2015 04:24:33 GMT\nAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=\n"
SDK
点击  对象存储服务  (OBS) SDK, 下载SDK或查看SDK文档。SDK的安装、认证方式等在SDK文档中对应语言类型的【使用】目录下。
错误码
请参考 错误码说明

 

上一篇:双录SDK集成开发文档(Android 版) 下一篇:视频点播服务:配置转码模板