PutObject

2022-09-25 15:22:27

Put Object用于上传文件。

请求语法

PUT /bucket-name/object HTTP/1.1
Content-Length:ContentLength
Content-Type: ContentType
Host: s3-us-east-1.ossfiles.com
Date: GMT Date
Authorization: SignatureValue

请求头部

名称 描述
Cache-Control 指定该 Object 被下载时的网页的缓存行为;更详细描述请参照 RFC 2616。 类型:字符串
Content-Disposition 指定该 Object 被下载时的名称;更详细描述请参照 RFC 2616。 类型:字符串
Content-Encoding 指定该 Object 被下载时的内容编码格式;更详细描述请参照 RFC 2616。 类型:字符串
x-amz-meta-sha256 对消息内容(不包括头部)计算 Sha256 值获得 64位字符,该值为消息的 Sha256 值。该请求头可用于消息合法性的检查(消息内容是否与发送时一致)。 类型:字符串
Expires 过期时间(milliseconds);更详细描述请参照 RFC 2616。 类型:字符串
x-amz-meta- 用户自定义变量,其中一个用处是:用户客户端加密时,设置秘钥对相关信息。 类型:字符串

响应头部

名称 描述
ETag ETag (entity tag) 在每个 Object 生成的时候被创建,ETag 值是该 Object 内容的 uuid,可以用于检查该 Object 内容是否发生变化。 类型:字符串

细节分析

  1. 用户请求携带了 x-amz-meta-sha256 请求头,棱束链对象存储会计算 body 的 Sha256 并检查一致性,如果不一致,将返回错误 。
  2. 如果试图添加的 Object 的同名文件已经存在,并且有访问权限,新添加的文件将不会覆盖原来的文件,将返回错误 。
  3. 如果在 PutObject 的时候,携带以 x-amz-meta- 为前缀的参数,则视为 user meta,比如 x-awz-meta-location。一个 Object 可以有多个类似的参数。
  4. PUT 一个 Object 的时候,MSS支持5个 HTTP RFC 2616 协议规定的Header 字段:Cache-Control、Expires、Content-Encoding、Content-Disposition、Content-Type。如果上传 Object 时设置了这些 Header ,则这个 Object 被下载时,相应的 Header 值会被自动设置成上传时的值。
  5. PUT 一个超过 95MB的 Object 的时候,建议使用 Multipart Upload 进行上传否则 棱束链对象存储会返回错误。

示例

请求示例:

PUT /test212/1.txt HTTP/1.1
Content-Type: text/plain
Authorization: AWS4-HMAC-SHA256 Credential=6a19c6de088ff32ff663287eec8f3b85/20220420/us-east-1/s3/aws4_request,SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date;x-amz-meta-s3b-last-modified;x-amz-meta-sha256, Signature=645580aa1611de8fea1552f8ddb3c486f2e4ebdbccd3d022b87d297117e2aca8
x-amz-content-sha256: 6c04ba2bd676da32897cde0308d3deb662034760212f77c8401ccb248a78698a
x-amz-date: 20220420T083349Z
x-amz-meta-s3b-last-modified: 20220402T184749Z
x-amz-meta-sha256: 6c04ba2bd676da32897cde0308d3deb662034760212f77c8401ccb248a78698a
Host: s3-us-east-1.ossfiles.com
Content-Length: 12

返回示例:

HTTP/1.1 200 OK
Date: Wed, 20 Apr 2022 08:59:22 GMT
Content-Type: text/plain
Content-Length: 0
Connection: keep-alive
ETag: "a2f83d96f9f0cfda99af9567f3a5c4e0"
Expires: Sat, 03 Mar 1990 23:33:33 GMT