文档

PostObject

更新时间:

调用PostObject用于通过HTML表单上传的方式将文件(Object)上传到指定存储空间(Bucket)。

注意事项

  • 要通过HTML表单上传的方式上传文件,您必须有oss:PutObject权限。具体操作,请参见为RAM用户授权自定义的权限策略

  • 通过PostObject上传的Object大小不能超过5 GB。

  • Post请求需要对Bucket拥有写权限。如果Bucket为public-read-write,可以不上传签名信息,否则要求对该操作进行签名验证。

  • 与Put操作不同,Post操作使用AccessKey Secret对Policy进行签名,计算出签名字符串作为Signature表单域的值,OSS通过验证该值从而判断签名的合法性。

  • 提交表单的URL为Bucket域名,不需要在URL中指定Object。即请求行是POST / HTTP/1.1,不能写为POST /ObjectName HTTP/1.1

  • 如果POST请求中包含Header签名信息或URL签名信息,OSS不会对此类信息做检查。

版本控制

在开启了版本控制的Bucket中发起PostObject请求时,OSS将为新添加的Object自动生成唯一的版本ID,并在响应Header中通过x-oss-version-id的形式返回。

在暂停了版本控制的Bucket中发起PostObject请求时,OSS将为新添加的Object自动生成一个null的版本ID,并在响应Header中通过x-oss-version-id的形式返回。同一个Object仅允许一个null的版本ID。

请求语法

POST / HTTP/1.1 
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
User-Agent: browser_data
Content-Length:ContentLength
Content-Type: multipart/form-data; boundary=9431149156168
--9431149156168
Content-Disposition: form-data; name="key"
key
--9431149156168
Content-Disposition: form-data; name="success_action_redirect"
success_redirect
--9431149156168
Content-Disposition: form-data; name="Content-Disposition"
attachment;filename=oss_download.jpg
--9431149156168
Content-Disposition: form-data; name="x-oss-meta-uuid"
myuuid
--9431149156168
Content-Disposition: form-data; name="x-oss-meta-tag"
mytag
--9431149156168
Content-Disposition: form-data; name="OSSAccessKeyId"
access-key-id
--9431149156168
Content-Disposition: form-data; name="policy"
encoded_policy
--9431149156168
Content-Disposition: form-data; name="Signature"
signature
--9431149156168
Content-Disposition: form-data; name="file"; filename="MyFilename.jpg"
Content-Type: image/jpeg
file_content
--9431149156168
Content-Disposition: form-data; name="submit"
Upload to OSS
--9431149156168--

请求头

重要
  • PostObject的消息实体通过多重表单格式(multipart/form-data)编码,在PutObject操作中参数通过HTTP请求头传递,在PostObject操作中参数作为消息体中的表单域传递。

  • PostObject操作过程中不支持通过传入x-oss-tagging请求头的方式为Object添加标签。您可以在PostObject操作完成后调用PutObjectTagging接口为Object添加标签。

名称

类型

是否必选

描述

Content-Type

字符串

指定文件的类型和网页的编码,确定浏览器读取文件的形式和编码方式。

Post操作提交表单编码必须为multipart/form-data,即Header中Content-Type为multipart/form-data;boundary=xxxxxx的形式。

boundary为边界字符串,是由表单随机生成的一个随机值,无需指定。如果通过SDK拼接表单,则SDK也会生成一个随机值。

x-oss-object-acl

字符串

在请求头中指定Object的访问权限。

当请求头和文件表单域中同时指定x-oss-object-acl时,文件表单域中设置的访问权限的优先级高于请求中设置的访问权限。

取值:

  • default(默认):Object遵循所在存储空间的访问权限。

  • private:Object是私有资源。只有Object的拥有者和授权用户有该Object的读写权限,其他用户没有权限操作该Object。

  • public-read:Object是公共读资源。只有Object的拥有者和授权用户有该Object的读写权限,其他用户只有该Object的读权限。请谨慎使用该权限。

  • public-read-write:Object是公共读写资源。所有用户都有该Object的读写权限。请谨慎使用该权限。

关于访问权限的更多信息,请参见设置Object ACL

此接口还需要包含Host、Date等公共请求头。更多信息,请参见公共请求头(Common Request Headers)

请求元素

重要
  • file必须为最后一个表单域,除file以外的其他表单域无顺序要求。

  • 所有表单域的key大小不能超过8 KB,表单域的value不能超过2 MB。

名称

类型

是否必选

描述

Cache-Control

字符串

指定该Object被下载时网页的缓存行为。更多信息,请参见RFC 2616

默认值:无

Content-Disposition

字符串

指定该Object被下载时的名称。更多信息,请参见RFC 2616

默认值:无

Content-Encoding

字符串

指定该Object被下载时的内容编码格式。更多信息,请参见RFC 2616

默认值:无

Expires

字符串

过期时间。更多信息,请参见RFC 2616

默认值:无

OSSAccessKeyId

字符串

是,有条件

Bucket拥有者的AccessKey ID。

默认值:无

限制:当Bucket为非public-read-write或者提供了Policy(或Signature)表单域时,必须提供OSSAccessKeyId表单域。

policy

字符串

是,有条件

Policy规定了请求表单域的合法性。不包含Policy表单域的请求被认为是匿名请求,并只能访问public-read-write的Bucket。

默认值:无

限制:当Bucket为非public-read-write或者提供了OSSAccessKeyId(或Signature)表单域时,必须提供Policy表单域。

重要

表单和Policy必须使用UTF-8编码,且Policy表单域要经过Base64编码。

Signature

字符串

是,有条件

根据AccessKey Secret和Policy计算的签名信息,OSS验证该签名信息从而验证该Post请求的合法性。更多信息,请参见附录:Post Signature

默认值:无

限制:当Bucket为非public-read-write或者提供了OSSAccessKeyId(或Policy)表单域时,必须提供Signature表单域。

说明

表单域对大小写不敏感,但表单域的值对大小写敏感。

x-oss-server-side-data-encryption

字符串

仅当加密方式为KMS时,通过此选项将默认加密算法AES256修改为SM4。

取值:SM4

x-oss-server-side-encryption-key-id

字符串

表示KMS托管的用户主密钥。 此选项仅当x-oss-server-side-encryption值为KMS时有效。

x-oss-content-type

字符串

由于浏览器会自动在文件表单域中增加Content-Type,为了解决此问题,OSS支持用户在Post请求体中增加x-oss-content-type,该项允许用户指定Content-Type,且拥有最高优先级。

优先级顺序:x-oss-content-type > file表单域的Content-Type

默认值:无

x-oss-forbid-overwrite

字符串

指定PostObject操作时是否覆盖同名Object。

当目标Bucket处于已开启或已暂停的版本控制状态时,x-oss-forbid-overwrite请求Header设置无效,即允许覆盖同名Object。

  • 不指定x-oss-forbid-overwrite,或将x-oss-forbid-overwrite指定为false时,表示允许覆盖同名Object。

  • 指定x-oss-forbid-overwritetrue时,表示禁止覆盖同名Object;

设置x-oss-forbid-overwrite请求Header会导致QPS处理性能下降,如果您有大量的操作需要使用x-oss-forbid-overwrite请求头(QPS > 1000),请联系技术支持,避免影响您的业务。

x-oss-object-acl

字符串

在文件表单域中指定Object的访问权限。此项支持同时在请求头和文件表单域中指定。

当请求头和文件表单域中同时指定x-oss-object-acl时,文件表单域中设置的访问权限的优先级高于请求中设置的访问权限。

取值:

  • default(默认):Object遵循所在存储空间的访问权限。

  • private:Object是私有资源。只有Object的拥有者和授权用户有该Object的读写权限,其他用户没有权限操作该Object。

  • public-read:Object是公共读资源。只有Object的拥有者和授权用户有该Object的读写权限,其他用户只有该Object的读权限。请谨慎使用该权限。

  • public-read-write:Object是公共读写资源。所有用户都有该Object的读写权限。请谨慎使用该权限。

关于访问权限的更多信息,请参见设置Object ACL

x-oss-storage-class

字符串

指定Object的存储类型。

对于任意存储类型的Bucket,如果上传Object时指定此参数,则此次上传的Object将存储为指定的类型。例如在IA类型的Bucket中上传Object时,如果指定x-oss-storage-class为Standard,则该Object直接存储为Standard。

取值:

  • Standard:标准存储

  • IA:低频访问

  • Archive:归档存储

  • ColdArchive:冷归档存储

  • DeepColdArchive:深度冷归档存储

    重要

    如果要上传的文件数量较多,直接指定上传的文件类型为深度冷归档类型会造成较高的PUT类请求费用。建议您先将文件的存储类型指定为标准存储进行上传,然后通过生命周期规则将其转储为深度冷归档类型,从而降低PUT类请求费用。

关于更多信息,请参见存储类型介绍

key

字符串

上传Object的名称,无需编码。如果名称包含路径,例如destfolder/example.jpg,则OSS会自动创建相应的文件夹。

默认值:无

success_action_redirect

字符串

上传成功后客户端跳转到的URL。如果未指定该表单域,返回结果由success_action_status表单域指定。如果上传失败,OSS返回错误码,并不进行跳转。

默认值:无

success_action_status

字符串

未指定success_action_redirect表单域时,该表单域指定了上传成功后返回给客户端的状态码。

有效值:200、201、204(默认)。

  • 如果该域的值设置为200或者204,OSS返回一个空文档和相应的状态码。

  • 如果该域的值设置为201,OSS返回一个XML文件和201状态码。

  • 如果该域的值未设置或者设置为一个非法值,OSS返回一个空文档和204状态码。

x-oss-meta-*

字符串

用户指定的user meta值。

默认值:无

如果请求中携带以x-oss-meta-为前缀的表单域,则视为user meta,例如x-oss-meta-location

说明

一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8 KB。

x-oss-security-token

字符串

如果本次访问是使用STS临时授权方式,则需要指定该项为SecurityToken的值,同时OSSAccessKeyId需要使用与之配对的临时AccessKey Id。计算签名时,与使用普通AccessKey Id签名方式一致。

默认值:无

搭建STS服务的具体操作请参见开发指南中的使用STS临时访问凭证访问OSS。您可以通过调用STS服务的AssumeRole接口或者使用各语言STS SDK来获取临时访问凭证。

file

字符串

文件或文本内容,无需编码。浏览器会自动根据文件类型来设置Content-Type,并覆盖用户的设置。OSS一次只能上传一个文件。

默认值:无

重要

file必须为最后一个表单域。

响应头

名称

类型

示例值

描述

x-oss-server-side-encryption

字符串

KMS

如果请求Header中指定了x-oss-server-side-encryption,则响应Header中将包含该头部,指明所使用的服务器端加密算法。

Content-MD5

字符串

1B2M2Y8AsgTpgAmY7PhC****

表示文件的MD5值。

重要

文件的MD5值指的是客户端上传完成后获取到的文件MD5,并非响应体的MD5。

x-oss-hash-crc64ecma

字符串

316181249502703****

表示文件的CRC64值。

x-oss-version-id

字符串

CAEQNhiBgMDJgZCA0BYiIDc4MGZjZGI2OTBjOTRmNTE5NmU5NmFhZjhjYmY0****

表示文件的版本ID。仅当您将文件上传至已开启版本控制状态的Bucket时,会返回该响应头。

此接口还涉及其他公共响应头,例如Date、x-oss-request-id等。更多信息,请参见公共响应头(Common Response Headers)

响应元素

名称

类型

描述

PostResponse

容器

保存Post请求结果的容器。

子节点:Bucket、ETag、Key、Location

Bucket

字符串

Bucket名称。

父节点:PostResponse

ETag

字符串

ETag (Entity Tag) 在每个Object生成的时候被创建。Post请求创建的Object,ETag值是基于一定计算规则生成的唯一值,但不是其内容的MD5值。ETag值可以用于检查该Object内容是否发生变化。

父节点:PostResponse

Location

字符串

新创建Object的URL。

父节点:PostResponse

示例

  • 请求示例:

    POST / HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 344606
    Content-Type: multipart/form-data; boundary=9431149156168
    --9431149156168
    Content-Disposition: form-data; name="key"
    /user/a/objectName.txt
    --9431149156168
    Content-Disposition: form-data; name="success_action_status"
    200
    --9431149156168
    Content-Disposition: form-data; name="Content-Disposition"
    content_disposition
    --9431149156168
    Content-Disposition: form-data; name="x-oss-meta-uuid"
    uuid
    --9431149156168
    Content-Disposition: form-data; name="x-oss-meta-tag"
    metadata
    --9431149156168
    Content-Disposition: form-data; name="OSSAccessKeyId"
    44CF9590006BF252****
    --9431149156168
    Content-Disposition: form-data; name="policy"
    eyJleHBpcmF0aW9uIjoiMjAxMy0xMi0wMVQxMjowMDowMFoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwXSx7ImJ1Y2tldCI6ImFoYWhhIn0sIHsiQSI6ICJhIn0seyJrZXkiOiAiQUJDIn1dfQ==
    --9431149156168
    Content-Disposition: form-data; name="Signature"
    kZoYNv66bsmc10+dcGKw5x2P****
    --9431149156168
    Content-Disposition: form-data; name="file"; filename="MyFilename.txt"
    Content-Type: text/plain
    abcdefg
    --9431149156168
    Content-Disposition: form-data; name="submit"
    Upload to OSS
    --9431149156168--
  • 返回示例:

    HTTP/1.1 200 OK
    x-oss-request-id: 61d2042d-1b68-6708-5906-33d81921362e 
    Date: Fri, 24 Feb 2014 06:03:28 GMT
    ETag: "5B3C1A2E053D763E1B002CC607C5****"
    Connection: keep-alive
    Content-Length: 0
    x-oss-hash-crc64ecma: 316181249502703****
    Content-MD5: 1B2M2Y8AsgTpgAmY7PhC****
    Server: AliyunOSS

错误码

错误码

HTTP状态码

描述

FieldItemTooLong

400

表单域key的大小不允许超过8 KB,表单域value的大小不允许超过2 MB。

InvalidArgument

400

无论Bucket是否为public-read-write,一旦上传OSSAccessKeyId、Policy、Signature表单域中的任意一个,则另两个表单域为必选项。如果缺失,将返回此错误。

InvalidDigest

400

用户上传了Content-MD5请求Header,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回此错误。

EntityTooLarge

400

请求的body总长度不允许超过5 GB。如果文件长度过大,将返回此错误。

InvalidEncryptionAlgorithmError

400

如果上传时指定了x-oss-server-side-encryption Header请求域,则必须设置其值为AES256、KMS或SM4。如果设置为其他值,将返回此错误。

IncorrectNumberOfFilesInPOSTRequest

400

Post请求中文件个数无效。Post请求中只能有一个file表单域。

FileAlreadyExists

409

请求的Header中携带x-oss-forbid-overwrite=true时,表示禁止覆盖同名文件。如果文件已存在,将返回此错误。

KmsServiceNotEnabled

403

将x-oss-server-side-encryption指定为KMS,但没有预先购买KMS套件。

FileImmutable

409

Bucket内的数据处于被保护状态时,如果您尝试删除或修改这些数据,将返回此错误码。

附录:Post Policy

Post请求的Policy表单域用于验证请求的合法性。Policy为一段经过UTF-8和Base64编码的JSON文本,声明了Post请求必须满足的条件。虽然对于public-read-write的Bucket上传时,Post表单域为可选项,但强烈建议使用该域来限制Post请求。

Post Policy示例如下:

{
  "expiration": "2014-12-01T12:00:00.000Z",
  "conditions": [
    {"bucket": "johnsmith" },    
    ["content-length-range", 1, 10],
    ["eq", "$success_action_status", "201"],
    ["starts-with", "$key", "user/eric/"],
    ["in", "$content-type", ["image/jpg", "image/png"]],
    ["not-in", "$cache-control", ["no-cache"]]
  ]
}

Post Policy中必须包含Expiration和Conditions。

  • Expiration

    Expiration项指定了Policy的过期时间,以ISO8601 GMT时间表示。例如2014-12-01T12:00:00.000Z指定了Post请求必须在2014年12月1日12点之前。

  • Conditions

    Conditions是一个列表,可以用于指定POST请求的表单域的合法值。

    Policy中支持的Conditions项请参见下表。

    Conditions名称

    描述

    Conditions匹配方式

    bucket

    Bucket名称。

    bucket

    content-length-range

    上传Object的最小和最大允许大小,单位为字节。

    content-length-range

    Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires

    HTTP请求Header。

    重要

    建议您在Policy中增加Content-Type限制,防止通过表单上传时Content-Type被恶意修改。您可以通过以下两种方式设置Content-Type:

    • 在Post请求体中增加x-oss-content-type,该项允许您指定Content-Type,例如Content-Type: image/jpeg。关于OSS支持设置的Content-Type类型列表,请参见如何设置Content-Type(MIME)?

    • 通过file表单域设置Content-Type,例如Content-Type: image/png。关于OSS支持设置的Content-Type类型列表,请参见如何设置Content-Type(MIME)?

    如果您通过以上两种方式均设置了Content-Type,Content-Type的优先级说明如下:

    x-oss-content-type > file表单域的Content-Type

    eq、starts-with、in和not-in

    key

    Object名称。

    eq、starts-with、in和not-in

    success_action_redirect

    上传成功后的跳转URL地址。

    eq、starts-with、in和not-in

    success_action_status

    未指定success_action_redirect时,上传成功后的返回状态码。

    eq、starts-with、in和not-in

    x-oss-meta-*

    用户指定的user meta。

    说明

    Policy用于限定表单域的行为。当您指定了["eq", "$x-oss-meta-biedb", "biedb-test001"],则必须在表单域中增加key为x-oss-meta-biedb,值为biedb-test001的表单域,否则将报错Invalid according to Policy: Policy Condition failed: ["eq", "$x-oss-meta-biedb", "biedb-test001"]

    eq、starts-with、in和not-in

    如果Post请求中包含额外的表单域,OSS可以将这些额外的表单域加入到Policy的Conditions中并检查其合法性。

  • Conditions匹配方式

    Conditions匹配方式

    描述

    content-length-range

    指定所允许上传的文件最大和最小范围,例如允许的文件大小为1~10字节,则可以写为["content-length-range", 1, 10]。

    eq

    表单域的值必须精确匹配Conditions中声明的值。例如指定key表单域的值必须为a:{"key": "a"} ,则可以写为["eq", "$key", "a"]。

    starts-with

    表单域的值必须以指定前缀开始。例如,如果要指定key的值以user/user1开始,则可以写为["starts-with", "$key", "user/user1"]。

    in

    以字符串列表的形式指定需包含的检查元素。例如通过PostObject接口上传图片时,需校验上传的文件为图片类型,但允许多种格式的图片,则通过in语义指定为["in", "$content-type", ["image/jpg", "image/png"]]。

    not-in

    以字符串列表的形式指定需排除的检查元素。例如通过PostObject接口上传时需要指定Object缓存行为,且不支持no-cache的形式,则通过not-in语义指定为["not-in", "$cache-control", ["no-cache"]]。

在Post Policy中$表示变量。如果要描述$,需要使用转义字符\$。下表描述了在Post Policy的JSON中需要进行转义的字符。

转义字符

描述

\/

斜杠

\\

反斜杠

\”

双引号

\$

美元符

\b

空格

\f

换页

\n

换行

\r

回车

\t

水平制表符

\uxxxx

Unicode字符

附录:Post Signature

(推荐)签名版本4

HTTP POST请求支持使用V4签名算法,要求表单和Policy必须包含如下信息,以支持OSS进行签名验证。

  • 表单

    字段

    类型

    是否必选

    描述

    policy

    字符串

    POST签名认证需要使用Base64编码的Policy来描述哪些是被允许的请求。在签名计算过程中,表示待签名的字符串。

    x-oss-signature-version

    字符串

    指定签名的版本和算法,固定值为OSS4-HMAC-SHA256。

    x-oss-credential

    字符串

    指明派生密钥的参数集,格式如下:

    <AccessKeyId>/<date>/<region>/oss/aliyun_v4_request
    • AccessKeyId:填写访问密钥中的AccessKey ID。

    • date:填写请求的日期,格式是YYYYMMDD,示例值为20231203。

    • region:填写请求所在的Region。

    • oss:请求的服务名称,固定为oss。

    • aliyun_v4_request:请求的版本说明,固定为aliyun_v4_request。

    x-oss-date

    字符串

    请求的时间,其格式遵循ISO 8601日期和时间标准,例如20231203T121212Z

    • 允许向后偏移15分钟:即实际服务器接收到请求的时间与x-oss-date携带的时间相比,可以晚最多15分钟。这种设计主要是考虑到网络传输延迟以及客户端和服务器之间可能存在的时间同步误差,确保即使客户端时间稍有偏差,也能在一定范围内正常处理请求。

    • 最多允许7天有效期:从x-oss-date指定的时间开始计算,请求的有效期不能超过7天。如果客户端发送的请求中的x-oss-date值表明该请求已经过期(超过7天),则OSS服务端会拒绝该请求,并返回错误信息。这种设计是为了保证请求的时效性和安全性,防止恶意提交旧的、已签名的请求。

    • x-oss-date指定的时间用作StringToSign中的TimeStamp,取值必须与创建SigningKey中的Date是同一天,且要求与 Policy中的x-oss-date取值保持一致。

    x-oss-signature

    字符串

    用于签名认证的描述信息。其值为通过HMAC-SHA256哈希算法对Base64编码后的Policy字符串进行加密计算,然后将经过HMAC-SHA256计算得出的二进制hash值转换成16进制的形式。

    x-oss-security-token

    字符串

    STS安全令牌。仅当使用STS用户构造URL签名时,才需要设置此参数。

  • Policy

    {
      "expiration": "2023-12-03T13:00:00.000Z",
      "conditions": [
        {"bucket": "johnsmith"},
        {"x-oss-signature-version": "OSS4-HMAC-SHA256"},
        {"x-oss-credential": "AKIDEXAMPLE/20231203/cn-hangzhou/oss/aliyun_v4_request"},
        {"x-oss-date": "20231203T121212Z"},
        ["content-length-range", 1, 10],
        ["eq", "$success_action_status", "201"],
        ["starts-with", "$key", "user/eric/"],
        ["in", "$content-type", ["image/jpg", "image/png"]],
        ["not-in", "$cache-control", ["no-cache"]]
      ]
    }

    Policy的conditions中必须包含以下元素。

    字段

    类型

    是否必选

    描述

    x-oss-signature-version

    字符串

    指定签名的版本和算法,固定值为OSS4-HMAC-SHA256。

    x-oss-credential

    字符串

    指明派生密钥的参数集,格式如下:

    <AccessKeyId>/<date>/<region>/oss/aliyun_v4_request
    • AccessKeyId:填写访问密钥中的AccessKey ID。

    • date:填写请求的日期,

    • region:填写请求所在的Region。

    • oss:请求的服务名称,固定为oss。

    • aliyun_v4_request:请求的版本说明,固定为aliyun_v4_request。

    x-oss-date

    字符串

    请求的时间,其格式遵循ISO 8601日期和时间标准,例如20231203T121212Z

    • 允许向后偏移15分钟:即实际服务器接收到请求的时间与x-oss-date携带的时间相比,可以晚最多15分钟。这种设计主要是考虑到网络传输延迟以及客户端和服务器之间可能存在的时间同步误差,确保即使客户端时间稍有偏差,也能在一定范围内正常处理请求。

    • 最多允许7天有效期:从x-oss-date指定的时间开始计算,请求的有效期不能超过7天。如果客户端发送的请求中的x-oss-date值表明该请求已经过期(超过7天),则OSS服务端会拒绝该请求,并返回错误信息。这种设计是为了保证请求的时效性和安全性,防止恶意提交旧的、已签名的请求。

    • x-oss-date指定的时间用作StringToSign中的TimeStamp,取值必须与创建SigningKey中的Date是同一天,且要求与 Policy中的x-oss-date取值保持一致。

  • 签名计算过程

    image

    1. 创建一个UTF-8编码的Policy。

    2. 将Policy进行Base64编码,生成一个安全传输的字符串,作为待签名字符串(StringToSign)。

    3. 采用HMAC-SHA256哈希算法对StringToSign进行加密计算。在此过程中,使用与OSS账户关联的SigningKey作为哈希运算的密钥。

    4. 将经过HMAC-SHA256计算得出的二进制哈希值转化为十六进制形式,所得到的十六进制字符串即为Signature,用于验证请求的完整性和合法性。

签名版本1

对于验证的POST请求,HTML表单中必须包含Policy和Signature信息。Policy控制请求中哪些值是允许的。

计算Signature的具体流程如下:

  1. 创建一个UTF-8编码的Policy。

  2. 将Policy进行Base64编码,其值作为待签名的字符串。

  3. 使用AccessKeySecret对要签名的字符串进行签名,签名方法为Signature = base64(hmac-sha1(AccessKeySecret,base64(policy)))

常见问题

报错Your proposed upload exceeds the maximum allowed size.如何处理?

  • 问题原因:上传文件的大小超出content-length-range指定的文件大小范围。

  • 解决方法:content-length-range用于指定上传文件的最小和最大允许大小,单位为字节。例如,您需要上传的文件大小为1 GB,则content-length-range可以设置为["content-length-range", 1, 1073741824]。

更多参考

  • 本页导读 (1)
文档反馈