PutObject(SOAP API)
注意
Amazon S3 的 SOAP API 不适用于新客户,并将于 2025 年 8 月 31 日接近使用寿命终止(EOL)。我们建议您使用 REST API 或 AWS SDK。
PutObject 操作将对象添加到存储桶。该对象的数据以 DIME 附件的形式附加。
为了确保对象在通过网络时不会损坏,您可以计算对象的 MD5,将其 PUT 到 Amazon S3,并将返回的 Etag 与计算的 MD5 值进行比较。
如果存储桶中已存在对象,则新对象将覆盖该对象,因为 Amazon S3 存储了上次写入请求。但是,Amazon S3 是一个分布式系统。如果 Amazon S3 几乎同时收到针对同一对象的多个写入请求,则可能会存储所有对象,尽管最终只有一个请求胜出。Amazon S3 不提供对象锁定;如果您需要此功能,请务必将其内置到您的应用程序层中。
例
此示例将一些数据和元数据放入“quotes”存储桶的“Nelson”对象中,授予用户(通常是拥有者)对该对象的 FULL_CONTROL 访问权限,并使匿名方可以读取该对象。在此示例中,未显示实际附件。
Sample Request
<PutObject xmlns="https://doc.s3.amazonaws.com/2006-03-01"> <Bucket>quotes</Bucket> <Key>Nelson</Key> <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>family</Name> <Value>Muntz</Value> </Metadata> <ContentLength>5</ContentLength> <AccessControlList> <Grant> <Grantee xsi:type="CanonicalUser"> <ID>a9a7b886d6241bf9b1c61be666e9</ID> <DisplayName>chriscustomer</DisplayName> </Grantee> <Permission>FULL_CONTROL</Permission> </Grant> <Grant> <Grantee xsi:type="Group"> <URI>http://acs.amazonaws.com/groups/global/AllUsers<URI> </Grantee> <Permission>READ</Permission> </Grant> </AccessControlList> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2007-05-11T12:00:00.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbqaEXAMPLE=</Signature> </PutObject>
Sample Response
<PutObjectResponse xmlns="https://s3.amazonaws.com/doc/2006-03-01"> <PutObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2006-03-01T12:00:00.183Z</LastModified> </PutObjectResponse> </PutObjectResponse>
元素
Bucket:要在其中添加对象的存储桶。Key:要分配给对象的键。Metadata:您可以在元数据元素中提供名称-值元数据对。这些将与对象一起存储。ContentLength:数据的长度,以字节为单位。AccessControlList:资源的访问控制列表。此元素是可选的。如果忽略,则向请求者授予对该对象的FULL_CONTROL访问权限。如果对象已存在,则将替换先前存在的访问控制策略。
响应
ETag:实体标签是对象的 MD5 哈希值,您可以使用它通过GetObjectExtended对于对象进行有条件提取。ETag 仅反映对于对象内容的更改,而不反映对其元数据的更改。LastModified:已保存对象的 Amazon S3 时间戳。
访问控制
要将对象放入存储桶,您必须对存储桶拥有 WRITE 访问权限。