

# PutObjectInline（SOAP API）
<a name="SOAPPutObjectInline"></a>

**注意**  
 Amazon S3 的 SOAP API 不适用于新客户，并将于 2025 年 8 月 31 日接近使用寿命终止（EOL）。我们建议您使用 REST API 或 AWS SDK。

`PutObjectInline` 操作将对象添加到存储桶。该对象的数据在 SOAP 消息的正文中提供。

如果存储桶中已存在对象，则新对象将覆盖该对象，因为 Amazon S3 存储了上次写入请求。但是，Amazon S3 是一个分布式系统。如果 Amazon S3 几乎同时收到针对同一对象的多个写入请求，则可能会存储所有对象，尽管最终只有一个请求胜出。Amazon S3 不提供对象锁定；如果您需要此功能，请务必将其内置到您的应用程序层中。

为了确保对象在通过网络时不会损坏，您可以计算对象的 MD5，将其 PUT 到 Amazon S3，并将返回的 Etag 与计算的 MD5 值进行比较。

PutObjectInline 不适合用于大型对象。系统将此操作限制为处理 1 MB 或更小的对象。如果 Data 参数对大于 1 MB 的对象进行编码，PutObjectInline 将失败并显示 `InlineDataTooLargeError` 状态代码。要上传大型对象，可以考虑使用非内联 PutObject API，或者改用 REST API。

**Example**  
此示例将一些文本和元数据写入“quotes”存储桶中的“Nelson”对象，授予用户（通常是拥有者）对该对象的 `FULL_CONTROL` 访问权限，并使匿名方可以读取该对象。  
`Sample Request`  

```
 1. <PutObjectInline xmlns="https://doc.s3.amazonaws.com/2006-03-01">
 2.   <Bucket>quotes</Bucket>
 3.   <Key>Nelson</Key>
 4.   <Metadata>
 5.     <Name>Content-Type</Name>
 6.     <Value>text/plain</Value>
 7.   </Metadata>
 8.   <Metadata>
 9.     <Name>family</Name>
10.     <Value>Muntz</Value>
11.   </Metadata>
12.   <Data>aGEtaGE=</Data>
13.   <ContentLength>5</ContentLength>
14.   <AccessControlList>
15.     <Grant>
16.       <Grantee xsi:type="CanonicalUser">
17.         <ID>a9a7b886d6fde241bf9b1c61be666e9</ID>
18.         <DisplayName>chriscustomer</DisplayName>
19.       </Grantee>
20.       <Permission>FULL_CONTROL</Permission>
21.     </Grant>
22.     <Grant>
23.       <Grantee xsi:type="Group">
24.         <URI>http://acs.amazonaws.com/groups/global/AllUsers</URI>
25.       </Grantee>
26.       <Permission>READ</Permission>
27.     </Grant>
28.   </AccessControlList>
29.   <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId>
30.   <Timestamp>2006-03-01T12:00:00.183Z</Timestamp>
31.   <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature>
32. </PutObjectInline>
```
`Sample Response`  

```
1. <PutObjectInlineResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01">
2.   <PutObjectInlineResponse>
3.     <ETag>&quot828ef3fdfa96f00ad9f27c383fc9ac7f&quot</ETag>
4.     <LastModified>2006-01-01T12:00:00.000Z</lastModified>
5.   </PutObjectInlineResponse>
6. </PutObjectInlineResponse>
```

## 元素
<a name="SOAPPutObjectInlineElements"></a>
+ `Bucket:` 要在其中添加对象的存储桶。

  
+ `Key:` 要分配给对象的键。

  
+ `Metadata:` 您可以在元数据元素中提供名称-值元数据对。这些将与对象一起存储。

  
+ `Data:` 数据的 base 64 编码形式。

  
+ `ContentLength:` 数据的长度，以字节为单位。

  
+ `AccessControlList:` 资源的访问控制列表。此元素是可选的。如果忽略，则向请求者授予对该对象的 `FULL_CONTROL` 访问权限。如果对象已存在，则将替换先前存在的访问控制策略。

  

## 响应
<a name="SOAPPutObjectInlineResponse"></a>
+  `ETag:` 实体标签是对象的 MD5 哈希值，您可以使用它通过 `GetObjectExtended` 对于对象进行有条件提取。ETag 仅反映对于对象内容的更改，而不反映对其元数据的更改。
+ `LastModified:` 已保存对象的 Amazon S3 时间戳。

## 访问控制
<a name="SOAPPutObjectInlineAccessControl"></a>

要将对象放入存储桶，您必须对存储桶拥有 `WRITE` 访问权限。

## 相关资源
<a name="SOAPPutObjectInline_RelatedResources"></a>
+  [PutObject（SOAP API）](SOAPPutObject.md) 
+  [CopyObject（SOAP API）](SOAPCopyObject.md) 