本文介绍OSS返回400错误的原因和解决方案。

InvalidBucketName

  • 错误消息:The specified bucket is not valid.
  • 错误原因:Bucket命名不符合规范。
  • 解决方案:检查并确保Bucket命名符合规范。
    Bucket命名规范如下:
    • 只包含小写字母、数字和短划线(-)。
    • 以小写字母或者数字开头和结尾。
    • 长度在3~63字节之间。

InvalidObjectName

  • 错误消息:
    • The Object name can not be empty.
    • The Length of Object name must be less than 1024.
    • The specified object is not valid.
  • 错误原因:Object命名不符合规范。
  • 解决方案:检查并确保Object命名符合规范。
    Object命名规范如下:
    • 使用UTF-8编码。
    • 长度在1~1023字节之间。
    • 不是以正斜线(/)或者反斜线(\)开头。

TooManyBuckets

  • 错误消息:You have attempted to create more buckets than allowed.
  • 错误原因:同一阿里云账号在同一地域内创建的Bucket数量已达到最大值100个。
  • 解决方案:如需调整Bucket数量上限,请提交工单。

RequestIsNotMultiPartContent

  • 错误消息:Bucket POST must be of the enclosure-type multipart/form-data.
  • 错误原因:Post操作提交表单编码不是multipart/form-data类型。
  • 解决方案:Post操作提交表单编码必须为multipart/form-data,即Header中Content-Typemultipart/form-data;boundary=xxxxxx形式,boundary为边界字符串。详情请参见PostObject

NotImplemented

  • 错误消息:A header you provided implies functionality that is not implemented.
  • 错误原因:封装API时传递了错误的或者不支持的参数。
  • 解决方案:请参见API概览中相应的API,填写正确的参数格式。

MissingArgument

  • 错误消息:Missing Some Required Arguments.
  • 错误原因:封装API时缺少必选参数。
  • 解决方案:请参见API概览中相应的API,补充必选参数。

InvalidArgument

  • 错误消息:Invalid Argument. Parameter is invalid.
    • 错误原因:参数格式不符合要求。
    • 解决方案:请参见API概览中相应的API,填写正确的参数格式。
  • 错误消息:The callback signature version is invalid.
    • 错误原因:签名版本不支持。
    • 解决方案:请确认当前签名为1.0或2.0版本。
  • 错误消息:Copy Source must mention the source bucket and key: /sourcebucket/sourcekey.
    • 错误原因:拷贝文件时,没有指定源Bucket和源Object。
    • 解决方案:拷贝文件时,需按照/sourcebucket/sourcekey的格式指定拷贝的源地址参数x-oss-copy-source。例如源Bucket为examplebucket,源Object为exampleobject,则拷贝文件时x-oss-copy-source应指定为/examplebucket/exampleobject
  • 错误消息:KMSMasterKeyID is not applicable if the default sse algorithm is not KMS.
    • 错误原因:当SSEAlgorithm取值为AES256时,填写了KMSMasterKeyID
    • 解决方案:仅当SSEAlgorithm取值为KMS且使用指定的密钥加密时,需填写KMSMasterKeyID
  • 错误消息:KMSMasterKeyID is not applicable if user is not in white list.或者SM4 is not applicable if user is not in white list.
    • 错误原因:用户无操作权限。
    • 解决方案:只有Bucket拥有者或者授权的RAM用户才能为Bucket设置加密规则。详情请参见PutBucketEncryption
  • 错误消息:No such bucket storage class exists.
    • 错误原因:指定的Bucket存储类型不存在。
    • 解决方案:OSS仅支持Standard(标准存储)、低频访问(IA)、Archive(归档)和ColdArchive(冷归档)四种存储类型。详情请参见PutBucket
  • 错误消息:Invalid version id specified.
    • 错误原因:指定的Object版本ID无效。
    • 解决方案:请通过GetBucketVersions (ListObjectVersions)接口确认Bucket是否已开启版本控制,以及Object填写的版本ID是否正确。
  • 错误消息:Version id can not be the empty string.
  • 错误消息:

    Authorization header is invalid.

    Authorization header is invalid, bad num of Items in Authorization header.

    AccessKeyId or Signature is missing in Authorization header value.

    Authorization header value is empty.

    Unknown parameter in Authorization header.

    • 错误原因:Authorization头部计算方法中参数填写不规范。
    • 解决方案:Authorization头部计算方法如下:
      Authorization = "OSS " + AccessKeyId + ":" + Signature
      Signature = base64(hmac-sha1(AccessKeySecret,
                  VERB + "\n"
                  + Content-MD5 + "\n" 
                  + Content-Type + "\n" 
                  + Date + "\n" 
                  + CanonicalizedOSSHeaders
                  + CanonicalizedResource))
      参数 说明
      AccessKeySecret 用于加密签名字符串的密钥。
      VERB 表示HTTP请求的Method,主要有PUT、GET、POST、HEAD、DELETE等。
      \n 换行符。
      Content-MD5 表示请求内容的MD5值,可用于检查消息合法性,例如消息内容是否与发送时一致。

      有关Content-MD5的详细计算方法的更多信息,请参见Content-MD5的计算方法

      Content-Type 表示请求内容的类型。例如application/octet-stream,也可以为空。
      Date 表示此次操作的时间,且必须为GMT格式。例如Sun, 22 Nov 2015 08:16:38 GMT
      CanonicalizedOSSHeaders 所有以x-oss-为前缀的HTTP Header。
      CanonicalizedResource 用户访问的OSS资源。
  • 错误消息:Post request accessKeyId is empty.
    • 错误原因:Post请求Header中缺少OSSAccessKeyId表单域。
    • 解决方案:当Bucket为非public-read-write或者提供了Policy(或Signature)表单域时,必须提供OSSAccessKeyId表单域。
  • 错误消息:Post request signature is empty.
    • 错误原因:Post请求Header中缺少签名信息。
    • 解决方案:当Bucket为非public-read-write或者提供了OSSAccessKeyId(或Policy)表单域时,必须提供Signature表单域。

      计算Signature的具体流程如下:

      1. 创建一个UTF-8编码的Policy。
      2. 将Policy进行Base64编码,其值即为Policy表单域填入的值,将该值作为将要签名的字符串。
      3. 使用AccessKeySecret对要签名的字符串进行签名,签名方法为Signature = base64(hmac-sha1(base64(policy), AccessKeySecret))
  • 错误消息:OSS authentication requires a valid Date.
    • 错误原因:Authorization头中的Date无效。
    • 解决方案:Date表示此次操作的时间,且必须为GMT格式,例如Sun, 22 Nov 2015 08:16:38 GMT
  • 错误消息:The bucket POST must contain the specified field name.
    • 错误原因:POST请求表单中包含无效参数,或者参数格式不正确。
    • 解决方案:请参见PostObject填写规范的参数。
  • 错误消息:The bucket POST contains unrecognized field name.
    • 错误原因:filename字段的下一行包含了自定义参数。
    • 解决方案:filename字段的下一行必须为规范的Content-Type参数。如下图所示:file-name
  • 错误消息:Post body size must be less than 5G.
    • 错误原因:Post请求的Body总长度超过5 GB。
    • 解决方案:Post请求的Body总长度不允许超过5 GB。详情请参见PostObject
  • 错误消息:The callback configuration is not base64 encoded.
    • 错误原因:Callback参数未经过Base64编码。
    • 解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL以及回调的内容。详情请参见Callback
  • 错误消息:The callback configuration is not json format.
    • 错误原因:Callback参数不是JSON格式。
    • 解决方案:Callback参数必须为经过Base64编码的JSON字符串。示例如下:
      {
      "callbackUrl":"121.101.166.30/test.php",
      "callbackHost":"oss-cn-hangzhou.aliyuncs.com",
      "callbackBody":"{\"mimeType\":${mimeType},\"size\":${size}}",
      "callbackBodyType":"application/json"
      }
  • 错误消息:The callback url configuration is invalid.
    • 错误原因:Callback参数没有指定请求回调的服务器 URL(callbackUrl)。
    • 解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL以及回调的内容。
  • 错误消息:The callback host configuration is invalid.
    • 错误原因:callbackHost参数无效,无法进行JSON解析。
    • 解决方案:callbackHost表示发起回调请求的Host头,例如oss-cn-hangzhou.aliyuncs.com。如果没有配置callbackHost,则解析callbackUrl中的URL,并将URL中解析到的Host填充到callbackHost中。
  • 错误消息:The callback body type configuration is invalid.The body type of callback is not supported.
    • 错误原因:callbackBodyType参数无效,无法进行JSON解析。
    • 解决方案:callbackBodyType表示发起回调请求的Content-Type,支持application/x-www-form-urlencodedapplication/json
  • 错误消息:The number of callback url exceed max value.
    • 错误原因:请求的callbackurl个数超过5个。
    • 解决方案:OSS支持同时配置最多5个URL,每个URL之间以分号(;)分隔。
  • 错误消息:The header value specified by persistent header is not utf-8 encoded.
    • 错误原因:用户自定义Header中的Value值不合法。
    • 解决方案:对自定义Header中Value值包含的中文等特殊字符进行UTF-8编码。
  • 错误消息:The header value specified by persistent header is not equal to reqeust header value.
    • 错误原因:用户自定义Header与请求头中的Header重名时,两者的Value值不一致。
    • 解决方案:用户自定义Header与请求头中的Header重名时,两者的Value值需保持一致。
  • 错误消息:The header value specified by persistent header contains CR or LF.
    • 错误原因:用户自定义Header中的Value值包含了回车符\r或换行符\n
    • 解决方案:请删除用户自定义Header中Value值包含的回车符\r和换行符\n
  • 错误消息:Either the callback query string parameter or the x-oss-callback header should be specified, not both.
    • 错误原因:请求URL和请求Header中同时包含了callback参数。
    • 解决方案:仅允许在请求URL或请求Header中包含callback参数。
  • 错误消息:Either the callback-var query string parameter or the x-oss-callback-var header should be specified, not both.
    • 错误原因:请求URL和请求Header中同时包含了callback var参数。
    • 解决方案:仅允许在请求URL或请求Header中包含callback var参数。
  • 错误消息:x-oss-traffic-limit should be specified either in query string or header, not both.
    • 错误原因:请求URL和请求Header中同时包含了单链接限速参数x-oss-traffic-limit
    • 解决方案:仅允许在请求URL或请求Header中包含单链接限速参数x-oss-traffic-limit
  • 错误消息:x-oss-traffic-limit is invalid, should be specified between 819200(100KB/s) and 838860800(100MB/s).
    • 错误原因:单链接限速取值无效。
    • 解决方案:单链接限速取值范围为819200~838860800,即100 KB/s~100 MB/s。
  • 错误消息:The format of persistent header is invalid, should be \"name:Base64Encode(value),name:Base64Encode(value)...\".The header value specified by persistent header is not base64 encoded.
    • 错误原因:用户自定义Header的格式错误。
    • 解决方案:用户自定义Header格式为x-oss-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)....。其中key1、key2等为自定义的Header,value1、value2为自定义Header对应的值,Base64_encode表示对自定义Header的值进行Base64编码。

      例如自定义Header为myheader1和myheader2,其值分别为myvalue1、myvalue2,则自定义请求Header应为x-oss-persistent-headers:myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=

  • 错误消息:The header 'x-oss-tagging' shall be encoded as UTF-8 then URLEncoded URL query parameters without tag name duplicates.
    • 错误原因:标签中Key和Value值未进行URL编码,且Key值重复。
    • 解决方案:对象标签使用一组键值对(Key-Value)标记对象,对象标签规则如下:
      • 单个Object最多可设置10个标签,Key不可重复。
      • 每个Key长度不超过128字节,每个Value长度不超过256字节。
      • Key和Value区分大小写。
      • 标签合法字符集包括大小写字母、数字、空格和以下符号:

        +‑=._:/

        通过HTTP Header的方式设置标签且标签中包含任意字符时,您需要对标签的Key和Value做URL编码。

  • 错误消息:The header specified by persistent header is reserved.
    • 错误原因:用户自定义Header中与HTTP中规定的标准头冲突。
    • 解决方案:用户自定义Header中不能指定HTTP中规定的标准头,例如HostContent-MD5OriginRange等。
  • 错误消息:The header specified by persistent header is not valid HTTP token.
    • 错误原因:用户自定义Header包含非法字符。
    • 解决方案:OSS遵循RFC7230规范,请根据RFC7230规范判断HTTP Header是否包含非法字符。
  • 错误消息:Can not get ip by this host.
    • 错误原因:Host无效。
    • 解决方案:Host包含Bucket域名以及IP地址两种。Bucket域名格式为BucketName.Endpoint,例如examplebucket.oss-cn-hangzhou.aliyuncs.com。如Host为IP地址,需确保IP地址有效。
  • 错误消息:Private address is forbidden to callback.
    • 错误原因:OSS无法向内网IP地址发送callback请求。
    • 解决方案:请使用公网地址发送callback请求。
  • 错误消息:The length of callback exceed max value.
    • 错误原因:callback参数的Base64编码总长度超过了5 KB。
    • 解决方案:callback参数的Base64编码总长度最大为5 KB。
  • 错误消息:The callback body is empty.
    • 错误原因:没有填写callbackBody参数。
    • 解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL(callbackUrl)以及回调的内容(callbackBody)。
  • 错误消息:The callback body is invalid.
    • 错误原因:callbackBody参数无效,无法进行JSON解析。
    • 解决方案:callbackBody表示发起回调时请求Body的值,例如key=$(object)&etag=$(etag)&my_var=$(x:my_var)。请参见Callback进行排查。
  • 错误消息:The length of callback var exceed max value.
    • 错误原因:callback var参数的Base64编码总长度超过了5 KB。
    • 解决方案:callback var参数的Base64编码总长度最大为5 KB。
  • 错误消息:The callback var is not expecten json.
    • 错误原因:callback-var参数不是JSON格式。
    • 解决方案:callback-var用于配置自定义参数,自定义参数格式为Key-Value对,Key要以 x: 开头且必须为小写格式。假设需要设置的Key分别为x:var1 x:var2,对应的值分别为value1和value2,则JSON格式如下:
      {
      "x:var1":"value1",
      "x:var2":"value2"
      }
  • 错误消息:Invalid date. Must be later than 1970-01-01 00:00:00.
    • 错误原因:时间参数无效,Unix时间戳小于0。
    • 解决方案:Unix时间戳必须大于0。
  • 错误消息:Invalid date. Cannot be later than the current time.
    • 错误原因:时间参数无效,Unix时间戳晚于当前时间。
    • 解决方案:Unix时间戳必须早于当前时间。
  • 错误消息:Bad date format.
    • 错误原因:时间参数无效。
    • 解决方案:时间格式需遵从RFC 1123标准,例如Sun, 06 Nov 1994 08:49:37 GMT
  • 错误消息:The Versioning element must be specified.
    • 错误原因:<VersioningConfiguration>字段中未指定Bucket的版本控制状态。
    • 解决方案:在<VersioningConfiguration>字段中指定Bucket的版本控制状态。示例如下:
      PUT /?versioning HTTP/1.1
      Host: bucket-versioning.oss-cn-hangzhou.aliyuncs.com
      Date: Tue, 09 Apr 2019 02:20:12 GMT
      Authorization: OSS e7thre3jj5mlvqk:12ztptkaR8a74gIGFzOaZZQe****
      <?xml version="1.0" encoding="UTF-8"?>
      <VersioningConfiguration>
          <Status>Enabled</Status>
      <VersioningConfiguration>

RepeatedTags

  • 错误消息:Tag keys must be unique.
  • 错误原因:标签中的Key已存在。
  • 解决方案:调用GetBucketTags获取存储空间已配置的标签信息,然后参见PutBucketTags配置新的标签。

InvalidHostPutBucket

  • 错误消息:Your host is invalid. Please put bucket use Open Storage Service standard host.
  • 错误原因:Host参数错误。
  • 解决方案:请使用标准访问域名。有关访问域名和数据中心的更多信息,请参见访问域名和数据中心

InvalidEncryptionAlgorithmError

  • 错误消息:The encryption algorithm specified is not valid.The Encryption request you specified is not valid. Supported value: AES256/SM4/KMS.
  • 错误原因:x-oss-server-side-encryption参数指定的值无效。
  • 解决方案:x-oss-server-side-encryption有效值为AES256KMSSM4。有关服务器端加密方式的更多信息,请参见PutObject

InvalidDataEncryptionAlgorithmError

  • 错误消息:The KMS Data Encryption request you specified is not valid. Supported value:SM4
  • 错误原因:指定的Object加密算法无效。
  • 解决方案:当Object的加密方式为KMS时,加密算法仅支持SM4。更多信息,请参见服务器端加密

InvalidParameter

  • 错误消息:The specified parameter KMS keyId is not valid.
  • 错误原因:指定的CMK ID无效。
  • 解决方案:当Object加密方式为KMS且使用指定的密钥加密时,需输入CMK ID。CMK ID示例值为9468da86-3509-4f8d-a61e-6eab1eac****

InvalidWORMConfiguration

  • 错误消息:Invalid WORM Configuration.
  • 错误原因:合规保留策略无效。
  • 解决方案:通过InitiateBucketWorm接口新建合规保留策略示例如下:
    POST /?worm HTTP/1.1
    Date: Thu, 15 May 2014 11:18:32 GMT
    Content-Length:556
    Content-Type: application/xml
    Host: BucketName.oss.aliyuncs.com
    Authorization: OSS nxj7dtlhcyl5hp****:COS3OQkfQPnKmYZTEHYv2****
    
    <InitiateWormConfiguration>
      <RetentionPeriodInDays>365</RetentionPeriodInDays>
    </InitiateWormConfiguration>

InventoryExceedLimit

  • 错误消息:You are not allowed to create more inventory than limit.
  • 错误原因:单个Bucket配置的清单规则已达到最大值1000条。
  • 解决方案:如需调整清单规则上限,请提交工单。

DailyInventoryExceedLimit

  • 错误消息:daily inventory object count exceed limit.
  • 错误原因:以天为单位导出清单文件时,Bucket中的文件数量超出限制。
  • 解决方案:以天为单位导出清单文件时,Bucket中的文件数量必须小于10亿。您可以通过GetBucketV2 (ListObjectsV2)接口获取Bucket内的文件数量。

WeeklyInventoryExceedLimit

  • 错误消息:weekly inventory object count exceed limit.
  • 错误原因:以周为单位导出清单文件时,Bucket中的文件数量超出限制。
  • 解决方案:以周为单位导出清单文件时,Bucket中的文件数量必须小于100亿。您可以通过GetBucketV2 (ListObjectsV2)接口获取Bucket内的文件数量。

BadRequest

  • 错误消息:Insufficient information. Origin request header needed.

    错误原因:缺少Origin请求头。

    解决方案:浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)给OSS,并带上特定的请求头Origin,用于标识跨域请求的来源域。示例如下:origin
  • 错误消息:Insufficient information. Request Access-Control-Request-Method header needed.

    错误原因:缺少Access-Control-Request-Method请求头。

    解决方案:浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)给OSS,并带上特定的请求头Access-Control-Request-Method,用于标识实际请求所用的方法。示例如下:method

RequestTimeout

  • 错误消息:Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed.
  • 错误原因:因网络环境或网络配置等引起的网络超时。
  • 解决方案:请参见网络超时处理

InvalidTaggingKey

  • 错误消息:The tagging key you provided is invalid.
  • 错误原因:对象标签中配置的Key不合法。
  • 解决方案:对象标签使用一组键值对(Key-Value)标记对象,对象标签规则如下:
    • 每个Key长度不超过128字节,每个Value长度不超过256字节。
    • Key和Value区分大小写。
    • 标签合法字符集包括大小写字母、数字、空格和以下符号:

      +‑=._:/

      通过HTTP Header的方式设置标签且标签中包含任意字符时,您需要对标签的Key和Value做URL编码。

TooManyCname

  • 错误消息:You have attempted to create more cname than allowed.
  • 错误原因:单个Bucket可绑定的域名数量已达到最大值100个。
  • 解决方案:如需调整Bucket域名上限,请提交工单。

InvalidChannelName

  • 错误消息:

    The Length of channel name must be less than 64.

    ChannelName must not be empty.

    The characters encoding must be utf-8.

    ChannelName must not contain a slash.

  • 错误原因:Channel命名不符合规范。
  • 解决方案:检查并确保Channel命名符合规范。
    Channel命名规范如下:
    • 使用UTF-8编码。
    • 长度在1~64字节之间。
    • 不能包含正斜线(/)或者反斜线(\)。

InvalidPart

  • 错误消息:One or more of the specified parts could not be found or the specified entity.
  • 错误原因:PartNumber或ETag错误导致CompleteMultipartUpload提交的Part无效。
  • 解决方案:服务端在调用CompleteMultipartUpload接口时会对PartNumber和ETag做校验。
    • PartNumber取值为1~10000。PartNumber可以不连续,但必须升序排列。例如第一个Part的PartNumber是1,第二个Part的PartNumber可以是5。
    • 通过CompleteMultipartUpload请求创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。

InvalidPartOrder

  • 错误消息:The list of parts was not in ascending order.

    错误原因:CompleteMultipartUpload提交的Part未按照partNumber升序排列。

    解决方案:CompleteMultipartUpload提交的Part需按照partNumber升序排列。例如第一个Part的PartNumber是1,第二个Part的PartNumber可以是5。

  • 错误消息:Part number must be an integer between 1 and 10000, inclusive.

    错误原因:无效的PartNumber。

    解决方案:请确保PartNumber取值为1~10000。

FilePartNotExist

  • 错误消息:The Part you read had been deleted.
  • 错误原因:请求的Part已删除。
  • 解决方案:请参见CompleteMultipartUpload查看是否已上传所有的Part。

InvalidXMLFormat

  • 错误消息:The XML you provided was not well-formed.
  • 错误原因:参数不符合XML格式。
  • 解决方案:请检查参数是否符合XML格式。

InvalidRequest

  • 错误消息:Request specific response headers cannot be used for anonymous GET requests.

    错误原因:请求参数中缺少必选参数。

    解决方案:请根据所调用的API接口,检查是否已填写所有必选参数。详情请参见API概览

  • 错误消息:Security-token must be provided by query string parameter.

    错误原因:没有携带security-token。

    解决方案:临时用户使用URL签名时,必须携带security-token。临时用户使用签名URL的格式为:http://oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=nz2pc56s936****&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv****&security-token=SecurityToken。详情请参见在URL中包含签名

  • 错误消息:Size of playlist is too big.

    错误原因:Playlist文件大小超出最大限制。

    解决方案:请确保Playlist文件大小不超过1 MB。

  • 错误消息:No ts found in the playlist.

    错误原因:未找到ts音视频文件。

    解决方案:通过推流的方式上传音视频文件。详情请参见PutLiveChannel

  • 错误消息:Playlist name must ends with \".m3u8\".

    错误原因:文件不以.m3u8结尾。

    解决方案:当转储类型为HLS时,指定生成的m3u8文件名称。文件名称需以.m3u8结尾,文件长度在6~128字符之间,例如playlist.m3u8

  • 错误消息:Master playlist has ts file.

    错误原因:playlist文件中同时包含了m3u8和ts类型文件。

    解决方案:通常playlist文件类型为m3u8,用于记录ts视频文件信息。详情请参见基于OSS构建HLS流

MaxPOSTPreDataLengthExceededError

  • 错误消息:Your POST request fields preceding the upload file were too large.
  • 错误原因:上传的文件过大。通过Post方法上传的文件不能超过5 GB。
  • 解决方案:请参见PostObject错误及排查

TooManyPipes

  • 错误消息:Maximal number of pipes supported is.
  • 错误原因:图片操作次数过多。
  • 解决方案:请减少您的图片操作次数,按提示限制在合法值以下。

FieldItemTooLong

  • 错误消息:Your name of form field is too long.
  • 错误原因:Post请求中表单域过大。
  • 解决方案:除了file表单域外,其他表单域大小不得超过4 KB。请参见PostObject错误及排查

MalformedPOSTRequest

  • 错误消息:The body of your POST request is not well-formed multipart/form-data.
  • 错误原因:PostObject请求中表单域格式不符合要求。
  • 解决方案:遵循表单域格式要求。
    表单域格式如下 :
    Content-Disposition: form-data;
            name="{key}"\r\n\r\n{value}\r\n--{boundary}

    PostObject请求示例如下:

    POST / HTTP/1.1
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)
    Content-Type: multipart/form-data; boundary=9431149156168
    Host: xxxx-hz.oss-cn-hangzhou.aliyuncs.com
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    Content-Length: 5052
    --9431149156168
    Content-Disposition: form-data; name="key"
    test-key
    --9431149156168
    Content-Disposition: form-data; name="Content-Disposition"
    attachment;filename=D:\img\example.png
    --9431149156168
    Content-Disposition: form-data; name="OSSAccessKeyId"
    2NeL********j2Eb
    要求如下:
    • Header必须包含Content-Type: multipart/form-data; boundary={boundary}。
    • Header和Body之间由\r\n--{boundary} 分割。\r\n显示为换行。
    • 表单域名称大小写敏感,如policykeyfileOSSAccessKeyIdOSSAccessKeyIdContent-Disposition
    • 表单域file必须为最后一个表单域。
    • Bucket为public-read-write时,可以不指定表单域OSSAccessKeyIdpolicySignature。如果指定了其中一个,则无论Bucket是否为public-read-write,都必须指定另外两个。
    说明 上面的示例为请求的部分内容,完整的请求请参见PostObject

    如果您还有疑问,请参见示例代码:

InvalidPolicyDocument

  • Invalid Simple-Condition
    • 错误消息:Invalid Policy: Invalid Simple-Condition: Simple-Conditions must have exactly one property specified.
    • 错误原因:请求Policy中没有包含conditions
    • 解决方案:请求Policy中必须包含至少一项conditions
  • Invalid JSON: unknown char e
    • 错误消息:Invalid Policy: Invalid JSON: unknown char e.
    • 错误原因:请求中的Policy格式错误。
    • 解决方案:请检查Policy格式,是否缺失",转义字符前是否有\
  • Invalid JSON: , or ] expected
    • 错误消息:Invalid Policy: Invalid JSON: , or ] expected.
    • 错误原因:请求中的Policy格式错误。
    • 解决方案:请检查Policy中是否缺少,]

IncorrectNumberOfFilesInPOSTRequest

  • 错误消息:POST requires exactly one file upload per request.
  • 错误原因:Post请求中文件个数无效。Post请求中只能有一个file表单域。
  • 解决方案:确保Post请求中只有一个file表单域。

EntityTooSmall

  • 错误消息:Your proposed upload smaller than the minimum allowed size.
  • 错误原因:上传的Object超出允许的最小值。
  • 解决方案:采用Post方法上传文件时,通过PostPolicy设置表单域的有效值。可使用限定条件content-length-range指定允许上传Object的大小范围。

EntityTooLarge

  • 错误消息:Your proposed upload exceeds the maximum allowed size.Source object Length exceeds the maximum allowed size.
  • 错误原因:上传的Object超出允许的最大值。
  • 解决方案:采用Post方法上传文件时,通过PostPolicy设置表单域的有效值。可使用限定条件content-length-range指定允许上传Object的大小范围。

MalformedXML

NoReplicationRule

  • 错误消息:No replication rule specified.
  • 错误原因:请求的Bucket没有配置跨区域复制规则。
  • 解决方案:请参见PutBucketReplication配置跨区域复制规则。

TooManyReplicationRules

  • 错误消息:OSS only support one replication rule now.
  • 错误原因:单个Bucket配置的跨区域复制规则数量超出限制。
  • 解决方案:单个Bucket仅允许配置一条跨区域复制规则。

InvalidBucketStatus

  • 错误消息:The src and dest bucket must be versioning enabled when drs tagging rule exist.
  • 错误原因:跨区域复制的源Bucket和目标Bucket的版本控制状态不一致。
  • 解决方案:跨区域复制的源Bucket和目标Bucket同时处于版本控制或非版本控制状态。

InvalidTargetBucket

  • 错误消息:The target bucket is invalid for bucket replication.
  • 错误原因:跨区域复制的目标Bucket无效。
  • 解决方案:调用GetBucketReplicationLocation获取可复制到的目标存储空间(Bucket)所在的地域。您可以根据返回结果决定将源Bucket的数据复制到哪个地域。

InvalidTargetLocation

  • 错误消息:The target bucket you specified does not locate in the target location.
  • 错误原因:目标地域不存在此Bucket。
  • 解决方案:请检查Bucket所在地域。

BadReplicationLocation

  • 错误消息:The replication location you choose is invalid.
  • 错误原因:跨区域复制对应的目标地域不存在。
  • 解决方案:请检查目标Bucket所在地域。

BucketAlreadyHasReplicationConfiguration

  • 错误消息:The bucket you specified already has replication configuration.
  • 错误原因:指定的Bucket已配置跨区域复制规则。
  • 解决方案:一个Bucket仅能与另一个Bucket存在跨区域复制关系,且允许双向配置跨区域复制。若要开启新的跨区域复制配置,请先删除已有的跨区域复制配置。

NoReplicationLocation

  • 错误消息:The bucket does not have corresponding replication location.
  • 错误原因:源Bucket所在的数据中心没有与之配对的可实施跨区域复制的数据中心。
  • 解决方案:请参见GetBucketReplicationLocation进行排查。

BucketReplicationAlreadyExist

  • 错误消息:Bucket replication already exists.
  • 错误原因:在已开启某个Bucket和另一个Bucket的跨区域复制情况下,再次开启跨区域复制时返回此错误。
  • 解决方案:请勿重复开启跨区域复制。

CORSRuleBeyondLimit

  • 错误消息:The CORS Rules num is beyond limit.
  • 错误原因:Bucket配置的CORS规则数量超出限制。
  • 解决方案:Bucket允许配置最多10条CORS规则。详情请参见PutBucketCors

TooManyTags

  • 错误消息:The bucket tags num is beyond limit.
  • 错误原因:Bucket配置的标签数量超出限制。
  • 解决方案:Bucket允许配置最多20个标签。详情请参见PutBucketTags

TooManyPrefixes

  • 错误消息:The bucket replication rule's prefixes number is beyond limit.
  • 错误原因:跨区域复制规则中配置的前缀数量超出限制。
  • 解决方案:进行跨区域复制时,允许将指定前缀的Object同步到目标Bucket,最多可以添加10个前缀。

TooManyFilterObjectTags

  • 错误消息:The bucket replication rule's filter object tags number is beyond limit.
  • 错误原因:跨区域复制规则中配置的对象标签个数超出限制。
  • 解决方法:同步与指定标签匹配的Object到目标Bucket,最多可添加10个标签。

InvalidDigest

  • 错误消息:The Content-MD5 you specified was invalid.
  • 错误原因:上传的Content-MD5请求头与OSS计算消息体的Content-MD5不一致。
  • 解决方案:请参见Content-MD5的计算方法进行排查。

InvalidCRC64

  • 错误消息:The x-oss-hash-crc64ecma you specified does not match what we calculated.
  • 错误原因:本地计算的crc64值与服务器返回的crc64值不一致。
  • 解决方案:请参见通过crc64校验数据传输的完整性进行排查。

InlineDataTooLarge

  • 错误消息:Inline data exceeds the maximum allowed size.
  • 错误原因:Object大小超出最大限制。
  • 解决方案:不同上传方式对文件大小的限制如下:
    • 通过简单上传方式上传的Object大小不能超过5 GB。
    • 通过表单上传方式上传的Object大小不能超过5 GB。
    • 通过追加上传方式上传的Object大小不能超过5 GB。
    • 通过分片上传方式上传的Object大小不能超过48.8 TB。

ImageTooLarge

  • 错误消息:Maximal size of image supported is.
  • 错误原因:图片大小超出限制。
  • 解决方案:原图文件大小限制如下:
    • 原图文件大小不能超过20 MB。
    • 使用旋转图片时原图的宽或高不能超过4096 px。
    • 原图单边大小不能超过30000 px。

IncompleteBody

  • 错误消息:You did not provide the number of bytes specified by the Content-Length HTTP header.
  • 错误原因:Content-length参数指定的字节大小与用户实际发送的字节大小不一致。
  • 解决方案:请根据实际发送的字节大小填写相应的Content-length参数。

KmsServiceNotEnabled

  • 错误消息:This user does not turn on KMS service.
  • 错误原因:使用KMS加密方式进行服务器端加密时,未开通KMS服务。
  • 解决方案:使用KMS加密方式进行服务器端加密前,请预先开通KMS服务。详情请参见开通密钥管理服务

OperationNotSupported

  • 错误消息:The operation is not supported for this resource.
  • 错误原因:该资源不支持此类操作。
  • 解决方案:常见的非法操作为试图解冻非归档或冷归档类型的文件。有关各类资源支持的操作类型,请参见API概览

NotSymlink

  • 错误消息:The object is not symlink.
  • 错误原因:操作的Object不是软链接类型。
  • 解决方案:请确保PutSymlink或GetSymlink操作仅作用于软链接。

InvalidTag

  • 错误消息:The TagKey you have provided is invalid.The TagValue you have provided is invalid.
  • 错误原因:存储空间标签的Key或Value不合法。
  • 解决方案:检查并确保存储空间标签命名符合规范,标签规范如下:
    • Key和Value必须为UTF-8编码。
    • Key最大长度为64字节,不能以http://https://Aliyun为前缀,且不能为空。
    • Value最大长度为128字节,可以为空。

InvalidEncryptionRequest

  • 错误消息:The parameters of client encryption are allowed to be set once.

    错误原因:通过CopyObject接口修改客户端加密元数据。

    解决方案:调用客户端加密上传文件后,加密元数据会被保护,无法通过CopyObject修改Object meta信息。详情请参见CopyObject

  • 错误消息:Miss some necessary client encryption meta parameters.

    错误原因:客户端加密缺少必要参数。

    解决方案:请确保已填写以下各项必选参数。

    参数 描述
    x-oss-meta-client-side-encryption-key 加密后的密钥。 经过主密钥加密后再经过Base64编码的字符串。
    x-oss-meta-client-side-encryption-start 随机产生的用于加密数据的初始值 。经过主密钥加密后再经过Base64编码的字符串。
    x-oss-meta-client-side-encryption-cek-alg 数据的加密算法。
    x-oss-meta-client-side-encryption-wrap-alg 数据密钥的加密算法。
  • 错误消息:The parts count calculated by client encryption meta is too large.

    错误原因:客户端加密元信息中输入的Part数量超出限制。

    解决方案:每个Object最多支持切分为10000个Part。

  • 错误消息:The client encryption meta data_size or part_size is invalid.

    错误原因:客户端加密元信息中输入的文件总大小或分片大小不合法。

    解决方案:通过客户端加密Multipart文件时,需要在init_multipart时传入整个大文件的总大小(x-oss-meta-client-side-encryption-data-size)以及分片大小(x-oss-meta-client-side-encryption-part-size),且分片大小必须是16的整数倍。详情请参见客户端加密

  • 错误消息:The client encryption part list is unexpected with init_multipart setted.

    错误原因:实际上传的分片数量和初始化分片上传指定的分片数量不一致。

    解决方案:请确保指定的分片数量与实际上传的分片数量一致。

  • 错误消息:The partId must less or equal to expectedPartNumber.

    错误原因:分片ID大于总分片数(PartNumber)。

    解决方案:请确保分片ID等于或者小于总分片数。详情请参见UploadPart

  • 错误消息:The partSize must same with init_multipart setted except last part.

    错误原因:实际上传的每个分片大小与初始化分片上传指定的每个分片大小不一致。

    解决方案:除最后一个分片外,其他分片大小均要求与初始化分片上传指定的每个分片大小一致。详情请参见UploadPart

  • 错误消息:The last partSize must same with init_multipart setted.

    错误原因:实际上传的所有分片总大小与初始化分片上传指定的分片总大小不一致。

    解决方案:上传最后一个分片后,请确保实际上传的所有分片总大小与初始化分片上传指定的分片总大小一致。详情请参见CompleteMultipartUpload

  • 错误消息:The client encryption meta is inconsistent with init_multipart setted.

    错误原因:客户端加密配置的分片加密信息与初始化分片上传中设置的加密信息不一致。

    解决方案:请确保客户端配置的分片加密信息与初始化分片上传中设置的加密信息一致。详情请参见客户端加密

  • 错误消息:Client encryption doesn't support upload part copy.

    错误原因:不支持对经过客户端加密的源文件中调用UploadPartCopy接口。

    解决方案:仅支持从未经客户端加密的源文件中调用UploadPartCopy接口,实现从一个已存在的Object中拷贝数据来上传一个Part。详情请参见UploadPartCopy

UserKeyMustBeSpecified

  • 错误消息:User key must be specified.
  • 错误原因:删除Object时未指定Object名称。
  • 解决方案:删除Object时需指定Object名称。详情请参见DeleteMultipleObjects

InvalidTargetBucketForLogging

  • 错误消息:Put bucket log requester is not target bucket owner.
  • 错误原因:存放日志的目标Bucket不存在。
  • 解决方案:请更换为有效的目标Bucket。

InvalidPart

  • 错误消息:One or more of the specified parts could not be found or the specified entity tag might not have matched the part's entity tag.
  • 错误原因:PartNumber或ETag错误导致CompleteMultipartUpload提交的Part无效。
  • 解决方案:请参见CompleteMultipartUpload

InvalidPartOrder

  • partNumber排序错误
    • 错误消息:The list of parts was not in ascending order.
    • 错误原因:CompleteMultipartUpload提交的Part未按照partNumber升序排列。
    • 解决方案:请参见CompleteMultipartUpload
  • partNumber取值错误
    • 错误消息:Part number must be an integer between 1 and 10000, inclusive.
    • 错误原因:无效的partNumber。partNumber的取值范围为1~10000。
    • 解决方案:请参见CompleteMultipartUpload

InvalidEncryptionAlgorithmError

  • 错误消息:The encryption algorithm specified is not valid.
  • 错误原因:指定的x-oss-server-side-encryption值无效。有效值为AES256KMS
  • 解决方案:请参见PutObject

InvalidTargetType

  • 错误消息:The symbolic's target file type is invalid.
  • 错误原因:Object类型为软链接,且软链接指向的目标Object类型仍为软链接。
  • 解决方案:确保软链接指向的目标Object不是软链接。