本文介绍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.
  • 错误原因: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

RequestTimeout

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

NotImplemented

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

InvalidArgument

  • 错误消息:Invalid Argument. Parameter is invalid.
  • 错误原因:参数格式不符合要求。
  • 解决方案:请参见API概览中相应的API,填写正确的参数格式。

MaxPOSTPreDataLengthExceededError

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

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

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

FilePartNotExist

  • 错误消息:The Part you read had been deleted.
  • 错误原因:CompleteMultipartUpload提交的分片被删除。
  • 解决方案:请参见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

InvalidDigest

  • 错误消息:The Content-MD5 you specified was invalid.
  • 错误原因:指定的Content-MD5值与所发送数据的MD5值不符。
  • 解决方案:请参见PutObject

InvalidTargetType

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