
# 下载对象-GetObject
#### 功能介绍
可通过本接口将存储在OBS中的对象下载到本地。了解更多信息请参见[下载对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0317.html)。
#### 与其他功能结合使用
- [服务端加密]
  如果客户端的对象上传时，使用了客户提供的加密密钥进行服务端加密，当下载对象时，同样也必须在消息中提供密钥。
- [多版本]
  默认情况下，获取的是最新版本的对象。如果最新版本的对象是删除标记，则返回对象不存在。如果要获取指定版本的对象，请求可携带versionId消息参数。
#### 归档存储或深度归档存储对象
如果要下载的对象是归档存储或深度归档存储类对象，由于对象存储在存档设备中，您必须先使用对象恢复，然后才能下载该归档存储或深度归档存储对象。对象处于不同的恢复状态时，给出不同响应：如果对象已恢复，下载对象成功时需要返回x-obs-restore头域指示恢复失效时间。对未恢复或正在恢复的归档存储或深度归档存储对象发送下载请求时，会返回错误403 Forbidden。
#### 接口约束
- 对于存储类别为归档存储或深度归档存储的对象，需要确认对象的状态为"已恢复"才能对其进行下载。
- 基于安全合规要求，自2023年12月30日后创建的桶，都禁止使用桶默认域名通过公网访问后缀为.apk或者.ipa的对象。通过自定义域名访问后缀为.apk或者.ipa的对象不受影响，按照工信部要求，您的自定义域名使用前须完成ICP备案。
 
#### 授权信息
您必须是对象拥有者或拥有下载对象的权限，才能调用本接口，建议使用IAM或桶策略进行授权。了解更多OBS授权方式请参见[OBS不同权限控制方式的区别](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)。
- 如果使用**IAM授权** ，那么请在"角色与策略授权"、"身份策略授权"两种IAM授权方式中选择一种，并配置相应权限：
  - 如果使用**角色与策略授权** （旧版IAM，即IAM v3接口），需具备**obs:object:GetObject（未开启多版本）** 、**obs:object:GetObjectVersion（开启或暂停多版本）** 权限，授权操作请参见[创建IAM自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)。
  
  - 如果使用**身份策略授权** （新版IAM，即IAM v5接口），如下表所示，需具备**obs:object:getObject（未开启多版本）** 、**obs:object:getObjectVersion（开启或暂停多版本）** 权限，授权操作请参见[创建IAM自定义身份策略](https://support.huaweicloud.com/usermanual-iam5/iam_01_0917.html)。
    
    | 授权项 Action                                                         | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | [条件键](https://support.huaweicloud.com/api-obs/obs_04_0112.html#ZH-CN_TOPIC_0000002375307974__condition_table) Condition Key                                                                                                                                                                                                                                                                                                  | [别名](https://support.huaweicloud.com/iam5_faq/iam_01_1103.html) Alias | 依赖的授权项 Dependencies                                                                                                                                                                                                                                                                                                                     |
    |:---|:---|:---|:---|:---|:---|
    | obs:object:getObject（未开启多版本） obs:object:getObjectVersion（开启或暂停多版本） | Read     | object \*                                                                         | - [g:EnterpriseProjectId](https://support.huaweicloud.com/usermanual-iam5/iam_01_0934.html#section2)  - obs:versionId                                                                                                                             | -                                                                                                             | - kms:cmk:create  - kms:cmk:list  - kms:cmk:decryptDataKey    |
    | obs:object:getObject（未开启多版本） obs:object:getObjectVersion（开启或暂停多版本） | Read     | -                                                                                 | - obs:EpochTime  - obs:SourceIp  - obs:TlsVersion  - obs:CustomDomain   | -                                                                                                             | - kms:cmk:create  - kms:cmk:list  - kms:cmk:decryptDataKey    |
       
    
   
- 如果使用**桶策略** 进行授权，需具备**obs:object:GetObject（未开启多版本）** 、**obs:object:GetObjectVersion（开启或暂停多版本）** 权限，具体操作请参见[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
 
#### URI
GET /{*object_key*}
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-obs/obs_04_0006.html)。调用前需要先[计算API签名](https://support.huaweicloud.com/api-obs/obs_04_0009.html)，并将签名添加到请求中。
您还可以使用[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/OBS/doc?api=GetObject)在线调试接口。
#### 请求消息样式
```
GET /ObjectName HTTP/1.1 
Host: bucketname.obs.cn-north-4.myhuaweicloud.com 
Date: date
Authorization: authorization
Range:bytes=byte_range 
<Optional Additional Header>
```
![](https://support.huaweicloud.com/api-obs/public_sys-resources/note_3.0-zh-cn.png)
其中Range字段可选，如果没有的话得到全部内容。
#### URI参数（URI Parameters）
GET操作获取对象内容时，允许用户通过请求参数的方式对一些消息头值进行重写，可以重写的消息头有：Content-Type、Content-Language、Expires、Cache-Control、Content-Disposition以及Content-Encoding共6个。另外所需恢复的对象拥有多个版本时，可以通过versionId参数，指定需要下载的版本。具体的说明如[表1]所示。
![](https://support.huaweicloud.com/api-obs/public_sys-resources/note_3.0-zh-cn.png)
OBS不会处理请求中携带的Accept-Encoding，也不会对上传的数据做任何压缩、解压的操作，压缩解压的操作由客户端决定。某些HTTPClient在默认情况下可能会根据服务端返回的Content-Encoding对数据做相应的解压处理，客户端程序需要根据自己的需求决定是否做解压处理以及如何解压（修改OBS端保存的对象元数据Content-Encoding或者在下载对象时对Content-Encoding进行重写）。如果在下载对象的请求中指明了重写消息头，OBS返回的HTTP标准消息头中将以请求中指定的重写内容为准。
OBS不支持匿名访问的GET请求重写消息头。
 表1URI参数（URI Parameters） 
| **参数名称**                     | **参数类型** | **是否必选** | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| response-content-type        | String   | 否        | **参数解释：** 下载对象时重写响应中的Content-Type头。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 参见HTTP标准头域Content-Type的取值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                       |
| response-content-language    | String   | 否        | **参数解释：** 下载对象时重写响应中的Content-Language头。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 参见HTTP标准头域Content-Language的取值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                             |
| response-expires             | String   | 否        | **参数解释：** 下载对象时重写响应中的Expires头。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 参见HTTP标准头域Expires的取值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                  |
| response-cache-control       | String   | 否        | **参数解释：** 下载对象时重写响应中的Cache-Control头。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 参见HTTP标准头域Cache-control的取值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                   |
| response-content-disposition | String   | 否        | **参数解释：** 下载对象时重写响应中的Content-Disposition头。 示例： response-content-disposition=attachment; filename\*=utf-8''name1 下载对象重命名为"name1"，如果name1中存在中文，需要将中文进行URL编码。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 无 **默认取值：** 无                                                                                                                                                                    |
| response-content-encoding    | String   | 否        | **参数解释：** 下载对象时重写响应中的Content-Encoding头。 **约束限制：** 该参数不允许匿名用户使用，您必须在请求中携带签名，否则请求将报错400 ForbidAnonReqOverwriteRespHead。 **取值范围：** 参见HTTP标准头域Content-Encoding的取值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                 |
| versionId                    | String   | 否        | **参数解释：** 对象的版本号，用于指定获取对象的版本号。 **约束限制：** 无 **取值范围：** 长度为32的字符串。 **默认取值：** 无，如果不设置则默认获取最新版本的对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| x-image-process              | String   | 否        | **参数解释：** 图片处理服务，描述针对对象的图片处理命令或处理样式。 示例： 命令方式：x-image-process=**image/commands** 样式方式：x-image-process=**style/stylename** 详见[《图片处理特性指南》](https://support.huaweicloud.com/usermanual-obs/obs_01_0001.html)。 **约束限制：** 无 **取值范围：** 命令方式：image/命令参数。 样式方式：style/样式名称。 **默认取值：** 如果不输入处理命令，将返回原图。 |
| attname                      | String   | 否        | **参数解释：** 下载对象时重写响应中的Content-Disposition头。 示例： attname=name1 下载对象重命名为"name1"。 **约束限制：** 无 **取值范围：** 无 **默认取值：** 无                                                                                                                                                                                                                                                                                                               |
   
#### 请求头参数（Request headers）
该请求除使用公共消息头外，还可以使用附加的消息头来完成获取对象的功能，消息头的意义如[表2]所示。
 表2请求头参数 
| **消息头名称**                                       | **消息头类型**                                            | **是否必选**          | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| Range                                           | String                                               | 否                 | **参数解释：** 获取对象时，获取在Range范围内的对象内容。 **约束限制：** - Range有三种格式： **"bytes=起始值-结束值"**(表示的Range范围从起始值开始，到结束值终止。） **"bytes=起始值-"**（表示的Range范围从起始值开始，到"对象长度-1"终止。） **"bytes=-结束值"**（表示的Range范围从"对象长度-结束值"开始，到"对象长度-1"终止。） 如果未按照以上3种标准格式配置参数，则**忽略Range字段获取整个对象**。 示例1：bytes=0-4（下载第1\~5个字节的数据） 示例2：bytes=4-（下载第5个字节到结尾的数据） 示例3：bytes=-4（下载最后4个字节的数据） 示例4：bytes=10-20,30-40（表示多个区间）   - 携带Range头域后，响应消息的ETag仍是对象的ETag，而不是Range范围内对象的ETag。  - 下载对象单个区间内容时，Range区间长度不能超过对象内容长度；下载对象多个区间内容时，所有Range区间的总长度不能超过对象总长度。   **取值范围：** - 起始值取值范围：\[0, 对象长度-1\]。 如果起始值小于0，**系统将忽略Range字段，返回整个对象**。 如果起始值超过"对象长度-1"，**则请求报错，返回416状态码（InvalidRange）**。   - 结束值必须大于起始值 如果结束值不大于起始值，系统将忽略Range字段，返回整个对象。 结束值如果大于"对象长度-1"，系统会自动修正为"对象长度-1"。    **默认取值：** 无 |
| If-Modified-Since                               | 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 | 否                 | **参数解释：** 如果对象在请求中指定的时间之后有修改，则返回对象内容；否则的话返回304（not modified）。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 1. EEE, dd MMM yyyy HH:mm:ss z  2. EEEE, dd-MMM-yy HH:mm:ss z  3. EEE MMM dd HH:mm:ss yyyy   对应示例： 1. if-modified-since: Sun, 06 Nov 1994 08:49:37 GMT  2. if-modified-since: Sunday, 06-Nov-94 08:49:37 GMT  3. if-modified-since: Sun Nov 6 08:49:37 1994   **约束限制：** 此参数指定的时间不能晚于当前的服务器时间（GMT时间），否则参数不生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| If-Unmodified-Since                             | 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 | 否                 | **参数解释：** 如果对象在请求中指定的时间之后没有修改，则返回对象内容；否则的话返回412（precondition failed）。 符合http://www.ietf.org/rfc/rfc2616.txt规定格式的HTTP时间字符串。 1. EEE, dd MMM yyyy HH:mm:ss z  2. EEEE, dd-MMM-yy HH:mm:ss z  3. EEE MMM dd HH:mm:ss yyyy   对应示例： 1. if-unmodified-since: Sun, 06 Nov 1994 08:49:37 GMT  2. if-unmodified-since: Sunday, 06-Nov-94 08:49:37 GMT  3. if-unmodified-since: Sun Nov 6 08:49:37 1994   **约束限制：** 此参数指定的时间不能晚于当前的服务器时间（GMT时间），否则参数不生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| If-Match                                        | String                                               | 否                 | **参数解释：** 如果对象的ETag和请求中指定的ETag相同，则返回对象内容，否则的话返回412（precondition failed）。 （ETag值，例：0f64741bf7cb1089e988e4585d0d3434） **约束限制：** 无 **取值范围：** 对象的ETag **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| If-None-Match                                   | String                                               | 否                 | **参数解释：** 如果对象的ETag和请求中指定的ETag不相同，则返回对象内容，否则的话返回304（not modified）。 （ETag值，例：0f64741bf7cb1089e988e4585d0d3434） **约束限制：** 无 **取值范围：** 对象的ETag **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| x-obs-server-side-encryption-customer-algorithm | String                                               | 否。当使用SSE-C方式时，必选。 | **参数解释：** 在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一起使用。 **取值范围：** AES256 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| x-obs-server-side-encryption-customer-key       | String                                               | 否。当使用SSE-C方式时，必选。 | **参数解释：** 在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                                               | 否。当使用SSE-C方式时，必选。 | **参数解释：** 在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一起使用。 **取值范围：** 密钥ID MD5的base64值。 **默认取值：** 无                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### 请求体参数（Request body）
该请求消息中不带请求体参数。
#### 响应消息样式
```
HTTP/1.1 status_code 
Content-Type: type 
Date: date 
Content-Length: length 
Etag: etag 
Last-Modified: time 
<Object Content>
```
#### 响应头 (Response Headers)
该请求的响应消息使用公共响应头，具体请参考[表1](https://support.huaweicloud.com/api-obs/obs_04_0013.html#ZH-CN_TOPIC_0173612084__d0e686)。
除公共响应头 (Response Headers)之外，还可能使用如下[表3]中的消息头。
 表3响应头 
| **消息头名称**                                       | **消息头类型**    | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|
| x-obs-expiration                                | String       | **参数解释：** 对象的过期时间。当对象单独设置了对象lifecycle，过期时间以对象lifecycle为准，该消息头用expiry-date描述对象的详细过期信息；如果对象没有设置对象lifecycle，设置了桶级别lifecycle，过期时间以桶级别lifecycle为准，该消息头用expiry-date和rule-id两个键值对描述对象的详细过期信息；否则不显示该头域。 **取值范围：** 时间格式为：EEE, dd MMM yyyy HH:mm:ss z 示例：expiry-date=Sun, 06 Nov 1994 08:49:37 GMT                                                                                                                                                             |
| x-obs-website-redirect-location                 | String       | **参数解释：** 当桶设置了Website配置，就可以设置对象元数据的这个属性，Website接入点返回301重定向响应，将获取这个对象的请求重定向到该属性指定的桶内另一个对象或一个外部的URL，该参数指明对象的重定向地址。必须以"/"、"http://"或"https://"开头，长度不超过2KB，且仅支持为桶根目录下的对象设置重定向，不支持为桶中文件夹下的对象设置重定向。 例如，重定向请求到桶内另一对象： x-obs-website-redirect-location:/anotherPage.html 或重定向请求到一个外部URL： x-obs-website-redirect-location:http://www.example.com/ OBS将这个值从头域中取出，保存在对象的元数据"WebsiteRedirectLocation"中。 |
| x-obs-delete-marker                             | Boolean      | **参数解释：** 标识删除的对象是否是删除标记。如果不是，则响应中不会出现该消息头。 **取值范围：** - true：是删除标记。  - false：不是删除标记。                                                                                                                                                                                                       |
| x-obs-version-id                                | String       | **参数解释：** 对象的版本号。如果该对象无版本号，则响应中不会出现该消息头。 **取值范围：** 长度为32的字符串。                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| x-obs-server-side-encryption                    | String       | **参数解释：** 配置服务端加密方式。示例：x-obs-server-side-encryption：kms **取值范围：** - kms：使用SSE-KMS加密方式  - AES256：使用SSE-OBS加密方式，且使用AES256算法                                                                                                                                                    |
| x-obs-server-side-data-encryption               | String       | **参数解释：** 该头域表示对象使用的数据加密算法。仅在SSE-KMS加密方式下使用该头域，如果开启SSE-KMS但不返回该头域则表明使用AES256算法。 示例：x-obs-server-side-data-encryption：SM4 **取值范围：** SM4：使用SM4算法                                                                                                                                                                                                                                                                                                     |
| x-obs-server-side-encryption-kms-key-id         | String       | **参数描述：** 当加密方式为SSE-KMS且使用指定密钥加密时，需输入密钥ID。密钥ID获取方法请参见[查看密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0179.html)。 说明： - 当您设置了x-obs-server-side-encryption头域且赋值为"kms"，即选择kms加密方式时，才能使用该头域指定加密密钥。  - 当您选择使用kms加密方式，但未设置此头域时，默认的主密钥将会被使用。如果默认主密钥不存在，系统将默认创建并使用。                                                |
| x-obs-server-side-encryption-customer-algorithm | String       | **参数解释：** 如果服务端加密是SSE-C方式，响应包含该头域，该头域表示解密使用的算法。 示例：x-obs-server-side-encryption-customer-algorithm：AES256 **取值范围：** AES256                                                                                                                                                                                                                                                                                                                           |
| x-obs-server-side-encryption-customer-key-MD5   | String       | **参数解释：** 如果服务端加密是SSE-C方式，响应包含该头域，该头域表示解密使用的密钥的MD5值。 示例：x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== **取值范围：** 密钥ID MD5的base64值。                                                                                                                                                                                                                                                                                             |
| x-obs-object-type                               | String       | **参数解释：** 对象的类型。对象为非Normal对象时，会返回此头域。 **取值范围：** - Appendable：通过追加写生成的对象。  - Symlink：软链接对象。                                                                                                                                                                                      |
| x-obs-next-append-position                      | Integer      | **参数解释：** 指明下一次请求应该提供的position。对象为Appendable对象时，会返回此头域。 **取值范围：** 无                                                                                                                                                                                                                                                                                                                                                                                                                         |
| x-obs-tagging-count                             | String       | **参数解释：** 对象关联的标签个数。仅当有读取标签权限时返回该参数。 示例：x-obs-tagging-count:1 **取值范围：** 无                                                                                                                                                                                                                                                                                                                                                                            |
| x-obs-checksum-crc64ecma                        | UnsignedLong | **参数解释：** 按照ECMA-182标准计算出消息体的crc64值，采用64位无符号数编码。 示例：x-obs-checksum-crc64ecma: 11051210869376104954 **取值范围：** 无                                                                                                                                                                                                                                                                                                                                        |
   
#### 响应体 (Response Body)
该请求的响应消息中不带消息元素。
#### 错误响应消息
无特殊错误，所有错误已经包含在[错误码概述](https://support.huaweicloud.com/api-obs/obs_04_0115.html)中。
#### 请求示例：下载整个对象
```
GET /object01 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
```
#### 响应示例：下载整个对象
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E
Accept-Ranges: bytes
ETag: "3b46eaf02d3b6b1206078bb86a7b7013"
Last-Modified: Wed, 01 Jul 2015 01:20:29 GMT
Content-Type: binary/octet-stream
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU
Date: Wed, 01 Jul 2015 04:24:33 GMT
Content-Length: 4572
[4572 Bytes object content]
```
#### 请求示例：指定Range下载对象
**指定Range下载对象（下载对象单个区间内容** **）**
```
GET /object01 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Mon, 14 Sep 2020 09:59:04 GMT
Range:bytes=20-30
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:mNPLWQMDWg30PTkAWiqJaLl3ALg=
```
**指定Range下载对象（下载对象多个区间内容** **）**
![](https://support.huaweicloud.com/api-obs/public_sys-resources/note_3.0-zh-cn.png)
所有Range区间的总长度不能超过对象内容总长度。
```
GET /object01 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Mon, 14 Sep 2020 10:02:43 GMT
Range:bytes=20-30,40-50
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:ZwM7Vk2d7sD9o8zRsRKehgKQDkk=
```
#### 响应示例：指定Range下载对象
**指定Range下载对象（下载对象单个区间内容** **）**
```
HTTP/1.1 206 Partial Content
Server: OBS
x-obs-request-id: 000001748C0DBC35802E360C9E869F31
Accept-Ranges: bytes
ETag: "2200446c2082f27ed2a569601ca4e360"
Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT
Content-Range: bytes 20-30/4583
Content-Type: binary/octet-stream
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSn2JHu4okx9NBRNZAvBGawa3lt3g31g
Date: Mon, 14 Sep 2020 09:59:04 GMT
Content-Length: 11
[ 11 Bytes object content]
```
**指定Range下载对象（下载对象多个区间内容** **）**
```
HTTP/1.1 206 Partial Content
Server: OBS
x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E
Accept-Ranges: bytes
ETag: "2200446c2082f27ed2a569601ca4e360"
Last-Modified: Mon, 14 Sep 2020 01:16:20 GMT
Content-Type: multipart/byteranges;boundary=35bcf444-e65f-4c76-9430-7e4a68dd3d26
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSIBWFOVW8eeWujkqSnoIANC2mNR1cdF
Date: Mon, 14 Sep 2020 10:02:43 GMT
Content-Length: 288
--35bcf444-e65f-4c76-9430-7e4a68dd3d26
Content-type: binary/octet-stream
Content-range: bytes 20-30/4583
[ 11 Bytes object content]
--35bcf444-e65f-4c76-9430-7e4a68dd3d26
Content-type: binary/octet-stream
Content-range: bytes 40-50/4583
[ 11 Bytes object content]
--35bcf444-e65f-4c76-9430-7e4a68dd3d26--
```
#### 请求示例：下载缩放图片
```
GET /example.jpg?x-image-process=image/resize,w_100 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:20:51 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:9Nsx45WjaVxlLnxlO9awasXn83N=
```
#### 响应示例：下载缩放图片
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E
x-image-process:image/resize,w_100
Accept-Ranges: bytes
ETag: "3b46eaf02d3b6b1206078bb86a7b7013"
Last-Modified: Wed, 01 Jul 2015 01:20:29 GMT
Content-Type: image/jpeg
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU
Date: Wed, 01 Jul 2015 04:20:51 GMT
Content-Length: 49
[ 49 Bytes object content]
```
#### 请求示例：判断对象Etag值
**如果对象Etag值匹配则下载该对象**
```
GET /object01 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:24:33 GMT
If-Match: 682e760adb130c60c120da3e333a8b09
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
```
#### 响应示例：判断对象Etag值，Etag不匹配
如果存储的对象的Etag值不是682e760adb130c60c120da3e333a8b09，则提示下载失败
```
HTTP/1.1 412 Precondition Failed
Server: OBS
x-obs-request-id: 8DF400000163D3F2A89604C49ABEE55E
Content-Type: application/xml
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSQwxJ2I1VvxD/Xgwuw2G2RQax30gdXU
Date: Wed, 01 Jul 2015 04:20:51 GMT
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Error>
  <Code>PreconditionFailed</Code>
  <Message>At least one of the pre-conditions you specified did not hold</Message> 
  <RequestId>8DF400000163D3F2A89604C49ABEE55E</RequestId>      
  <HostId>ha0ZGaSKVm+uLOrCXXtx4Qn1aLzvoeblctVXRAqA7pty10mzUUW/yOzFue04lBqu</HostId>
  <Condition>If-Match</Condition>
</Error>
```
#### 响应示例：判断对象Etag值匹配，下载成功
如果存储的对象的Etag值是682e760adb130c60c120da3e333a8b09，则下载成功
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 5DEB00000164A21E1FC826C58F6BA001
Accept-Ranges: bytes
ETag: "682e760adb130c60c120da3e333a8b09"
Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT
Content-Type: application/octet-stream
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSbkdml1sLSvKnoHaRcOwRI+6+ustDwk
Date: Mon, 16 Jul 2015 08:04:00 GMT
Content-Length: 8
[ 8 Bytes object content]
```
#### 请求示例：在URL中携带签名下载对象
```
GET /object02?AccessKeyId=H4IPJX0TQTHTHEBQQCEC&Expires=1532688887&Signature=EQmDuOhaLUrzrzRNZxwS72CXeXM%3D HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Fri, 27 Jul 2018 10:52:31 GMT
```
#### 响应示例：在URL中携带签名下载对象
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00
ETag: "682e760adb130c60c120da3e333a8b09"
Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT
Content-Type: application/octet-stream
x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw
Date: Fri, 27 Jul 2018 10:52:31 GMT
Content-Length: 8
[ 8 Bytes object content]
```
#### 请求示例：下载对象并重命名，使用response-content-disposition参数
**下载对象并重命名** **，使用response-content-disposition参数实现**
```
GET /object01?response-content-disposition=attachment; filename*=utf-8''name1 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
```
#### 响应示例：下载对象并重命名，使用response-content-disposition参数
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00
ETag: "682e760adb130c60c120da3e333a8b09"
Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT
Content-Type: application/octet-stream
x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw
Date: Fri, 27 Jul 2018 10:52:31 GMT
Content-Length: 8
Content-Disposition: attachment; filename*=utf-8''name1
[ 8 Bytes object content]
```
#### 请求示例：下载对象并重命名，使用attname参数
**下载对象并重命名** **，使用attname参数实现**
```
GET /object01?attname=name1 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.cn-north-4.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 04:24:33 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:NxtSMS0jaVxlLnxlO9awaMTn47s=
```
#### 响应示例：下载对象并重命名，使用attname参数
```
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 804F00000164DB5E5B7FB908D3BA8E00
ETag: "682e760adb130c60c120da3e333a8b09"
Last-Modified: Mon, 16 Jul 2015 08:03:34 GMT
Content-Type: application/octet-stream
x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCTlpxILjhVK/heKOWIP8Wn2IWmQoerfw
Date: Fri, 27 Jul 2018 10:52:31 GMT
Content-Length: 8
Content-Disposition: attachment; filename*=utf-8''name1
[ 8 Bytes object content]
```
#### 请求示例：带自定义返回消息头
```
GET /obj001?response-expires=Thu%2C%2001%20Feb%202015%2017%3A00%3A00%20GMT HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 02:37:22 GMT
Authorization: OBS UDSIAMSTUBTEST000003:2tod8LyZOGA0+46HMjmp176XRaI=
```
#### 响应示例：带自定义返回消息头
```
HTTP/1.1 200 OK
Server: OBS
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSmpL2dv6zZLM2HmUrXKTAi258MPqmrp
x-obs-request-id: 0000018A2A73AF59D3085C8F8ABF0C65
Accept-Ranges: bytes
ETag: "21e7e5efb6b73de19e691d6c4e32a9cf"
Content-Disposition: attachment
Date: Wed, 01 Jul 2015 02:37:22 GMT
Expires: Thu, 01 Feb 2015 17:00:00 GMT
Content-Type: binary/octet-stream
Content-Length: 392
 
[392 Bytes object content]
```
#### 请求示例：指定versionId访问指定版本对象
```
GET /obj001?versionId=G001118A6803675AFFFFD3043F7F91D0 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 02:37:22 GMT
Authorization: OBS UDSIAMSTUBTEST000003:2tod8LyZOGA0+46HMjmp176XRaI=
```
#### 响应示例：指定versionId访问指定版本对象
```
HTTP/1.1 200 OK
Server: OBS
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSmpL2dv6zZLM2HmUrXKTAi258MPqmrp
x-obs-request-id: 0000018A2A73AF59D3085C8F8ABF0C65
Accept-Ranges: bytes
x-obs-version-id: G001118A6803675AFFFFD3043F7F91D0
ETag: "21e7e5efb6b73de19e691d6c4e32a9cf"
Content-Disposition: attachment
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: binary/octet-stream
Content-Length: 392
 
[392 Bytes object content]
```
#### 请求示例：获取使用服务器端加密存储的对象
```
GET /obj001 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: Wed, 01 Jul 2015 02:37:22 GMT
Authorization: OBS UDSIAMSTUBTEST000003:2tod8LyZOGA0+46HMjmp176XRaI=
x-obs-server-side-encryption-customer-key:d09s2lKS9cmQO9135fQXMCV8fsOP02aDWd441g
x-obs-server-side-encryption-customer-key-MD5:ZjQpad35Fiw1322Fwa
x-obs-server-side-encryption-customer-algorithm:AES256
```
#### 响应示例：获取使用服务器端加密存储的对象
```
HTTP/1.1 200 OK
Server: OBS
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSmpL2dv6zZLM2HmUrXKTAi258MPqmrp
x-obs-request-id: 0000018A2A73AF59D3085C8F8ABF0C65
Accept-Ranges: bytes
ETag: "21e7e5efb6b73de19e691d6c4e32a9cf"
Content-Disposition: attachment
Date: Wed, 01 Jul 2015 02:37:22 GMT
Content-Type: binary/octet-stream
Content-Length: 392
x-obs-server-side-encryption-customer-key-MD5:ZjQpad35Fiw1322Fwa
x-obs-server-side-encryption-customer-algorithm:AES256
 
[392 Bytes object content]
```
#### 请求示例：下载SSE-C加密对象时URL指定加密信息
```
GET /obj001?x-obs-server-side-encryption-customer-algorithm=AES256&x-obs-server-side-encryption-customer-key=K7QkYpBkM5%2Bhca27fsNkUnNVaobncnLht%2FrCB2o%2F9Cw%3D&x-obs-server-side-encryption-customer-key-MD5=4XvB3tbNTN%2BtIEVa0%2FfGaQ%3D%3D
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: Mon, 11 May 2026 03:29:00 GMT
Authorization: OBS UDSIAMSTUBTEST000003:2tod8LyZOGA0+46HMjmp176XRaI=
```
#### 响应示例：下载SSE-C加密对象时URL指定加密信息
```
HTTP/1.1 200 OK
Server: OBS
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSmpL2dv6zZLM2HmUrXKTAi258MPqmrp
x-obs-request-id: 0000018A2A73AF59D3085C8F8ABF0C65
Accept-Ranges: bytes
ETag: "21e7e5efb6b73de19e691d6c4e32a9cf"
Date: Mon, 11 May 2026 03:29:01 GMT
Content-Type: binary/octet-stream
Content-Length: 1024
x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==
x-obs-server-side-encryption-customer-algorithm:AES256
 
[1024 Bytes object content]
```
#### 使用SDK调用接口
建议您使用OBS SDK调用接口。SDK对API进行了封装以简化您的开发工作，直接调用SDK接口函数即可访问OBS，无需手动计算签名。
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0701.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0502.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0501.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_23_0501.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0601.html) | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0501.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0501.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0501.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0501.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0501.html) |
|---|---|---|---|---|---|---|---|---|---|
   
#### 相关文档
- 使用obsutil下载对象，请参见[下载对象](https://support.huaweicloud.com/utiltg-obs/obs_11_0018.html)。
- 使用OBS Browser+下载对象，请参见[下载文件或文件夹](https://support.huaweicloud.com/browsertg-obs/obs_03_1063.html)。
- 了解更多下载对象相关介绍，请参见[下载对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0317.html)。
- API操作涉及的计费项参见[计费项](https://support.huaweicloud.com/price-obs/obs_42_0002.html)。
 
