
# 上传对象
#### 功能说明
上传单个对象到指定桶中。
#### 方法定义
```
ObsClient.putObject
```
#### 请求参数
| **字段名**                 | **类型**                                                                      | **约束** | **说明**                                                                                                                                                                               |
|:---|:---|:---|:---|
| Bucket                  | String                                                                      | 必选     | 桶名。                                                                                                                                                                                  |
| Key                     | String                                                                      | 必选     | 对象名。                                                                                                                                                                                 |
| RequestDate             | String 或 Date | 可选     | 指定请求时间。 说明： 当为String类型时，必须符合ISO8601或RFC822规范。                                                                              |
| ACL                     | String                                                                      | 可选     | 创建对象时可指定的[预定义访问策略](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0204.html)。                                                                                   |
| StorageClass            | String                                                                      | 可选     | 创建对象时可指定的对象的[存储类型](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/obs_34_0205.html)。                                                                                   |
| Body                    | String                                                                      | 可选     | 待上传对象的内容。                                                                                                                                                                            |
| SourceFile              | File 或 Blob   | 可选     | 待上传的文件（浏览器必须支持FileReader）。                                                                                                                                                           |
| ProgressCallback        | Function                                                                    | 可选     | 获取上传进度的回调函数。 说明： 该回调函数依次包含三个参数：已上传的字节数、总字节数、已使用的时间（单位：秒）。                                                                   |
| Offset                  | Number                                                                      | 可选     | 当设置了SourceFile时有效，代表源文件中某一分段的起始偏移大小，默认值为0， 单位为字节。                                                                                                                                    |
| Metadata                | Object                                                                      | 可选     | 待上传对象的自定义元数据。                                                                                                                                                                        |
| WebsiteRedirectLocation | String                                                                      | 可选     | 当桶设置了Website配置，该参数指明对象的重定向地址。                                                                                                                                                        |
| Expires                 | Number                                                                      | 可选     | 待上传对象的生命周期，单位：天。                                                                                                                                                                     |
| SuccessActionRedirect   | String                                                                      | 可选     | 上传对象成功后的重定向的地址。                                                                                                                                                                      |
| ContentType             | String                                                                      | 可选     | 待上传对象的MIME类型，常见的contentType（MIME）列表参见[配置、编辑、查看对象元数据](https://support.huaweicloud.com/usermanual-obs/obs_03_0324.html)。                                                               |
| ContentLength           | Number                                                                      | 可选     | 当设置了SourceFile时有效，代表待上传对象数据的长度。                                                                                                                                                      |
| ContentMD5              | String                                                                      | 可选     | 待上传对象数据的MD5值（经过Base64编码），提供给OBS服务端，校验数据完整性。                                                                                                                                          |
| SseKms                  | String                                                                      | 可选     | 以SSE-KMS方式加密对象，支持的值： - kms：使用SSE-KMS方式加密对象                   |
| SseKmsKey               | String                                                                      | 可选     | SSE-KMS方式下加密的主密钥ID，可为空。 密钥ID获取方法请参见[查看密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0179.html)。                                           |
| SseC                    | String                                                                      | 可选     | 以SSE-C方式加密对象，支持的值： - AES256：以SSE-C方式加密对象，加密算法使用AES256。   |
| SseCKey                 | String                                                                      | 可选     | SSE-C方式下加密的密钥，该密钥需要您自定义，并由256bit的密钥经过base64编码得到。                                                                                                                                     |
   
![](https://support.huaweicloud.com/api-obs_browserjs_sdk_api_zh/public_sys-resources/note_3.0-zh-cn.png)
- Body与SourceFile不能同时使用。
- 当Body与SourceFile都为空时，上传对象的大小为0字节。
 
#### 返回结果（InterfaceResult）
| **字段名**      | **类型** | **说明**                                                                                                        |
|:---|:---|:---|
| RequestId    | String | OBS服务端返回的请求ID。                                                                                                |
| ETag         | String | 对象的ETag值。                                                                                                     |
| VersionId    | String | 对象的版本号。                                                                                                       |
| StorageClass | String | 对象的存储类型，当对象存储类型是标准存储时，该值为空。                                                                                   |
| SseKms       | String | SSE-KMS方式的算法。                                                                                                 |
| SseKmsKey    | String | SSE-KMS加密方式下使用的KMS主密钥的ID值。密钥ID获取方法请参见[查看密钥](https://support.huaweicloud.com/usermanual-dew/dew_01_0179.html)。 |
| SseC         | String | SSE-C方式的算法。                                                                                                   |
| SseCKeyMd5   | String | SSE-C方式下加密使用密钥的MD5值，该值用于验证密钥传输过程中是否出错。                                                                        |
   
#### 代码样例
```
obsClient.putObject({
       Bucket : 'bucketname',
       Key : 'objectkey',
       Metadata:{meta1:'value1', meta2:'value2'},
       Body : 'Hello OBS',
       ContentType: 'text/plain'
},function (err, result) {
       if(err){
              console.error('Error-->' + err);
       }else{
              if(result.CommonMsg.Status < 300){
                     console.log('RequestId-->' + result.InterfaceResult.RequestId);
                     console.log('ETag-->' + result.InterfaceResult.ETag);
                     console.log('VersionId-->' + result.InterfaceResult.VersionId);
                     console.log('StorageClass-->' + result.InterfaceResult.StorageClass);
              }else{
                     console.log('Code-->' + result.CommonMsg.Code);
                     console.log('Message-->' + result.CommonMsg.Message);
              }
       }
});
```
