添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
打酱油的香蕉  ·  Cantonese ...·  1 月前    · 
乖乖的手套  ·  超级链BaaS-百度超级链·  7 月前    · 
好帅的抽屉  ·  【冰点】:我们是主角·  8 月前    · 
  • 使用OSS中的数据作为机器学习的训练样本
  • DataLakeAnalytics+OSS:基于OSS的Severless的交互式查询分析
  • 通过HDP2.6 Hadoop读取和写入OSS数据
  • 通过CDH5 Hadoop读取和写入OSS数据
  • Apache Impala(CDH6)查询OSS数据
  • Spark使用OSS Select加速数据查询
  • 基于OSS+MaxCompute构建数据仓库
  • 数据备份和容灾
  • 备份存储空间
  • 数据库备份到OSS
  • 通过云存储网关使用OSS服务
  • 本地共享文件夹访问
  • 本地磁盘访问
  • OSS上传提示Name or service not known报错
  • osscmd工具上传提示InvalidBucketName报错
  • 调用Callback时页面显示400 call back error
  • OSS服务.netSDK中使用MemoryStream上传文件为空的解决方法
  • OSS下载rar格式文件,打开后乱码
  • IE浏览器下载OSS文件后扩展名被省略
  • OSS支持FTP吗?
  • OSS文件实现强制下载的方法
  • OSS Post请求的Policy设置方法
  • OSS通过range参数获取部分文件
  • OSS的文件更新后,部分地区下载的文件仍是旧的版本
  • 在OSS控制台中读请求与写请求次数统计的来源
  • 使用OSS的JS SDK上传大于100K的文件时报错
  • OSS验证Refer防盗链是否生效
  • OSS变通实现IP黑白名单
  • STS生成的临时账户授权检查逻辑
  • OSS的Bucket权限管理
  • 如何获取AccessKeyId和AccessKeySecret
  • Access key对OSS的bucket控制权限太高,需要对bucket更细粒度的权限控制
  • RAM子账户授权OSS单个bucket中部分文件的访问权限
  • oss域名访问提示Anonymous access is forbidden for this operation.
  • OSS细粒度的权限控制
  • OSS异常流量排查及防护
  • 如何给子账号赋权OSS的操作?
  • 如何授权RAM子账号列举指定文件目录
  • Python sdk中multiupload上传如何验证文件完整性
  • OSS MD5一致性校验说明
  • OSS下载内容与实际内容不一致
  • 域名/网络
  • OSS如何查看Bucket内网、外网域名地址
  • ECS用户如何正确使用OSS内网地址?
  • OSS是否支持Bucket作为三级域名的访问方式?
  • OSS是否支持HTTPS访问
  • 通过反向代理访问OSS的HTTPS域名
  • OSS+CDN访问文件直接下载
  • OSS设置Object更新时自动刷新CDN缓存
  • OSS使用SDK访问Bucket提示Endpoint错误
  • OSS设置CORS规则以后还是报No 'Access-Control-Allow-Origin'的解决方法
  • 访问OSS资源或者使用SDK时提示“ using the specified endpoint”
  • OSS绑定域名时验证域名所有权
  • 为什么OSS内网域名无法ping通
  • DNS解析
  • 站点中如何应用OSS资源
  • OSS如何开启CDN加速服务
  • OSS触发FIN的条件
  • OSS上传或下载的带宽限制
  • OSS上传慢
  • 如何停止绑定域名时默认开启的CDN服务?
  • 如何设置HTTPS证书托管
  • 对象存储OSS中Bucket的访问域名使用介绍
  • 对象存储OSS查看Bucket统计和Object统计方法
  • 通过OSS控制台资源监控报表功能了解Bucket使用情况
  • 通过OSS控制台概览了解Bucket相关属性
  • OSS通过管理控制台查看资源监控报表的请求次数统计信息
  • 如何授权子账号云查看OSS控制台总概览的基础数据
  • 存储空间(bucket)管理
  • 如何获取OSS上每个文件夹的大小
  • OSS中可以重命名Bucket吗?是否支持Object迁移?
  • OSS如何一键删除Bucket
  • OSS对object和目录的移动与修改操作
  • OSS的Bucket、Object、文件目录命名规范汇总
  • OSSFS通过www账户挂载Bucket
  • OSS API设置LifeCycle提示时间格式错误
  • OSS开启访问日志
  • 查找OSS Object的访问操作记录
  • OSS日志里面206代表什么
  • OSS的Bucket每天会自动生成名称中包含日期的Object
  • OSS数据操作常见问题FAQ
  • Bucket下出现异常文件如何排查
  • 如何查看存储空间大小
  • OSS可创建Bucket个数限制,容量是否需要扩容?
  • 如何删除Bucket
  • 文件(object)管理
  • OSS怎么更改Object元数据信息
  • OSS中LifeCycle删除文件的策略
  • 判断OSS文件被删除
  • OSS删除碎片文件
  • 当Object名称中存在不可见字符如何处理?
  • OSS有哪些批量操作?
  • OSS静态文件的打开方式
  • OSS的gzip压缩如何使用?
  • IE浏览器中浏览OSS的object URL中文文件名乱码
  • OSS 如何设置 Content-Type(MIME)?
  • 上传Object后如何获取访问URL
  • 如何给文件重命名
  • 如何修改、更新、编辑文件?
  • OSS上传文件大小限制
  • OSS SDK如何进行批量操作?
  • Java实现生成URL签名的代码示例
  • PHP实现OSS的签名URL
  • OSS如何通过sdk获取object的签名URL
  • OSS中的时间标准
  • 控制台获取签名链接后过一段时间超时
  • 调用oss sdk操作报错:SignatureDoesNotMatch
  • Object签名URL相关问题
  • 签名错误 (signature not match)
  • API/SDK
  • OSS支持时间同步的sdk
  • nternal.aliyuncs.com...
  • Oss Java sdk实现listobject(列出所有的object)
  • 使用OSS的javasdk的contentMD5出现log4j警告
  • OSS Java SDK超时&重传代码样例
  • 测试版PHP SDK中不能自动检测所需PHP模块的原因
  • OSS API文档 “Date”字段的GMT格式说明
  • - assumed...
  • OSS API返回结果有JSON格式的吗?
  • Python sdk查询所有object列表
  • iOS SDK和Android SDK如何开启log?
  • OSS图片处理服务不支持ICO格式图片
  • OSS图片处理服务绑定域名时提示:域名绑定在自己的其他Bucket上
  • 对象存储OSS控制台操作—图片鉴黄
  • OSS上传图片时exif信息处理规则
  • PHP SDK 2.0.1是否支持图片处理服务
  • OSS 图片处理服务配置文件缓存的方法
  • 图片处理服务处理后的PNG图片的透明背景变黑
  • OSS 图片处理如何保护原始图片不被访问
  • OSS图片处理访问报Forbidden access to the original image错误的处理方法
  • 使用图片处理服务,原图无法访问。报错accessdenied。
  • OSS图片处理服务导致CORS配置失效
  • OSS图片处理URL访问报错NoSuchStyle, NoSuchKey, NoSuchFile
  • 图片的原图是正常的,被图片处理后就旋转了,该怎样处理
  • OSS图片处理对原图和缩略图的限制说明
  • OSS 如何将图片强制缩放成正方形并且不裁剪
  • 图片处理服务是否可以支持跨域操作
  • OSS上传图片访问URL返回http code值为403
  • 本文主要介绍调用PostObject接口出现的常见错误及解决方法。

    调用PostObject接口出现问题时,您可以参见 PostObject ,确认调用的配置是否正常。若问题没有解决,请参考以下内容。

  • PostObject常见报错
  • PostObject常见问题
  • PostObject示例
  • PostObject简介
  • PostObject常见报错

    ErrorCode: MalformedPOSTRequest ErrorMessage: The body of your POST request is not well-formed multipart/form-data 表单域格式不符合要求。 表单域格式请查看 PostObject表单域格式 。 ErrorCode: InvalidAccessKeyId ErrorMessage: The OSS Access Key Id you provided does not exist in our records. AccessKeyID 禁用或不存在,或者过期的临时用户AccessKeyID,或者临时用户没有提供STS Token。 排查方法请参参见 InvalidAccessKeyId错误排查 。 ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy expired. 表单域Policy中的 expiration 过期。 请调整Policy中的 expiration ,注意expiration的格式 ISO8601 GMT 。 ErrorCode: AccessDenied ErrorMessage: SignatureDoesNotMatch The request signature we calculated does not match the signature you provided. Check your key and signing method. 签名错误。 签名方法请查看 PostObject的签名 。 ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid Simple-Condition: Simple-Conditions must have exactly one property specified. 请求中 Policy 至少包含一个condition。 具体方法请查看 PostObject的Policy格式 。 ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid JSON: unknown char e 请求中的 Policy 格式不正确。 请检查Policy格式, " 是否缺失,转义字符前是否有 \ 。 ErrorCode: InvalidPolicyDocument ErrorMessage: Invalid Policy: Invalid JSON: , or ] expected 请求中的 Policy 格式不正确。 请检查Policy中是否缺少 , ] 。 ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“starts-with”, “$key”, “user/eric/“] 请求指定的 Key Policy 限定的不符。 请检查请求中表单域 Key 的值。 ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“eq”, “$bucket”, “mingdi-bjx”] 请求指定 Bucket Policy 限定的不符。 请检查endpoint中的 Bucket 的值。 ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“starts-with”, “$x-oss-meta-prop”, “prop-“] 请求指定的文件元数据 x-oss-meta-prop 与policy限定的不符。 请检查请求中的 x-oss-meta-prop 的值。 ErrorCode: AccessDenied ErrorMessage: Invalid according to Policy: Policy Condition failed: [“eq”, “${field}”, “${value}”] 表单域中指定的 {field} Policy 中限定的值不符,或者在请求中没有指定。 请检查请求中的 {field} 的值。 ErrorCode: AccessDenied ErrorMessage: You have no right to access this object because of bucket acl. 当前用户无权限。 请参见 OSS权限问题及排查 。 ErrorCode: InvalidArgument ErrorMessage: The bucket POST must contain the specified ‘key’. If it is specified, please check the order of the fields 表单域没有指定 Key ,或者放在了表单域 file 后。 请添加表单域 Key 或调整顺序。

    PostObject常见问题

    如何指定Key。

    Key即Object name,在表单域Key中指定,示例如下所示。

    Content-Disposition: form-data; name="key"
    {key}
    --9431149156168
    如何指定Object内容。

    Object内容通过表单域 file 中指定,示例如下所示。

    Content-Disposition: form-data; name="file"; filename="images.png"
    Content-Type: image/png
    {file-content}
    --9431149156168
  • 表单域 file 必须是表单中的最后一个域,即表单域 file 必须放在所有表单域后。
  • filename 是上传的本地文件名称,而不是Objectname。
  • 如何指定Object类型content-type。

    Object类型在表单域file中指定Content-Type,而不是Header中的Content-Type,示例如下所示。

    Content-Disposition: form-data; name="file"; filename="images.png"
    Content-Type: image/png
    {file-content}
    --9431149156168
    如何指定Object内容MD5校验content-md5。

    在PostObject请求头中指定 Content-MD5 ,注意MD5值是整个Body的MD5,即所有表单域的MD5。请求Header示例如下所示。

    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
    Content-MD5: tdqHe4hT/TuKb7Y4by+nJg==
    Host: mingdi-hz.oss-cn-hangzhou.aliyuncs.com
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    Content-Length: 5246
    --9431149156168
    如何指定签名Signature。

    签名的计算方法请查看PostObject中的签名,签名通过表单域 Signature 携带。

    如何使用临时用户STS Token执行PostObject。

    临时用户密钥的AccessKeyID、AccessKeySecret用法跟主用户、子用户相同,Token放在表单域 x-oss-security-token 中携带,示例如下所示。

    Content-Disposition: form-data; name="Signature"
    5L0+KaeugxYygfqWLJLoy0ehOmA=
    --9431149156168
    Content-Disposition: form-data; name="x-oss-security-token"
    {Token}
    --9431149156168
    说明 :如果您想了解更多访问控制的信息,请参见 阿里云访问控制 。 如何指定上传回调(Callback)。

    上传回调通过表单域 callback 携带,示例如下所示。

    Content-Disposition: form-data; name="callback"
    eyJjYWxsYmFja0JvZHlUeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsICJjYWxsYmFja0JvZHkiOiAiZmlsZW5hbWU9JHtvYmplY3R9JnNpemU9JHtzaXplfSZtaW1lVHlwZT0ke21pbWVUeXBlfSIsICJjYWxsYmFja1VybCI6ICJodHRwOi8vb3NzLWRlbW8uYWxpeXVuY3MuY29tOjIzNDUwIn0=
    --9431149156168

    Callback的自定义参数也是通过表单域携带,示例如下所示。

    Content-Disposition: form-data; name="x:var1"
    {var1-value}
    --9431149156168
    说明 :如果您想了解Callback更多内容,请参见 上传回调 。 如何指定Content-Transfer-Encoding。

    在表单域 file 中指定 Content-Transfer-Encoding file 表单域示例如下所示。

    Content-Disposition: form-data; name="file"; filename="images.png"
    Content-Type: image/png
    Content-Transfer-Encoding: base64
    {file-content}
    --9431149156168
    如何指定用户自定义元信息Object User Meta。

    用户自定义元信息,可以通过表单域指定,示例如下所示。

    Content-Disposition: form-data; name="x-oss-meta-uuid"
    {uuid}
    --9431149156168
    Content-Disposition: form-data; name="x-oss-meta-tag"
    {tag}
    --9431149156168
    说明 :文件元信息更详细的说明,请参见 文件元信息Object Meta 。 如何指定限定条件expiration、Key、Bucket、size、Header等。

    OSS的PostObject支持丰富的条件限制,可以满足高安全性要求。限定条件Conditions可以通过表单域Policy 指定,详细的说明请查看上面的PostObject的Policy格式。Policy的示例如下所示。

    {
        "expiration": "2018-01-01T12:00:00.000Z",
        "conditions": [
            ["eq", "[$Bucket]", "md-hz"],
            ["starts-with", "[$Key]", "md/conf/"],
            ["content-length-range", 0, 104857600]
    }

    上面的Policy实例中,用户的PostObject操作的限定条件如下:

  • [$Bucket]必须是md-hz。
  • [$Key]必须以 md/conf/ 开头。
  • 上传的文件长度必须在100M以下。
  • 请求时间在 2018-01-01T12:00:00.000Z 之前。
  • 如何指定Cache-Control、Content-Type、Content-Disposition、Content-Encoding、Expires等HTTP Header。

    Cache-Control Content-Type、Content-Disposition、Content-Encoding、Expires等HTTP Header需要在表单域中指定,这些HTTP Header的含义请参见 RFC2616 。但是Content-MD5需要在Post Header中指定。

    PostObject示例

    PostObject表单域格式

  • PostObject请求格式,有以下注意点:
  • Header一定要有 Content-Type: multipart/form-data; boundary={boundary}
  • Header和Body之间由 \r\n--{boundary} 分割。
  • 表单域格式如下所示。
    Content-Disposition: form-data;
            name="{key}"\r\n\r\n{value}\r\n--{boundary}
  • 表单域名称大小写敏感,如Policy、Key、file、OSSAccessKeyId、OSSAccessKeyId、Content-Disposition。
    注意 :表单域 必须为最后一个表单域。
  • Bucket为 public-read-write 时,可以不指定表单域OSSAccessKeyId、Policy、Signature,一旦指定OSSAccessKeyId、Policy、Signature中的任意一个,无论Bucket是否为public-read-write,则另两个必须指定。
  • 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: mingdi-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\1.png
    --9431149156168
    Content-Disposition: form-data; name="OSSAccessKeyId"
    2NeL********j2
  • 以上示例请求中 \r\n 显示为新行,即换行,后面的示例请求类似。
  • 以上示例为部分内容,完整的请求请参见 PostObject
  • 如果您还有疑问,请参考如下示例代码:

    PostObject的Policy格式

  • PostObject请求的 Policy 表单域用于验证请求的合法性,声明了PostObject请求必须满足的条件。限定条件如下所示。
  • UTF-8格式的JSON文本,经过base64编码后放在表单域Policy中。
  • Policy中必须包含expiration和condtions,其中condtions至少有一项。
  • 下面是base64编码前的Policy示例,expiration项指定了请求的过期时间,使用的是ISO8601 GMT时间格式,例如:2018-01-01T12:00:00.000Z,指定请求必须发生在2018年1月1日12点前。
    {
      "expiration": "2018-01-01T12:00:00.000Z",
      "conditions": [
          ["content-length-range", 0, 104857600]
      ]
    }
  • Post Policy支持的限定条件(Conditions)如下所示。
    success_action_redirect 上传成功后的跳转URL地址。支持精确匹配和前缀匹配方式。 [“starts-with”, “$success_action_redirect”, “http://www.aliyun.com”] success_action_status 未指定success_action_redirect时,上传成功后的返回状态码。支持精确匹配和前缀匹配方式。 [“eq”, “$success_action_status”, “204”] Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires等 HTTP请求头,作为表单域传递。支持精确匹配和前缀匹配方式。 [“eq”, “$Content-Encoding”, “ZLIB”]
  • Post Policy有以下转义字符,使用 \ 转义。
  • 创建一个 UTF-8 编码的Policy。
  • 将Policy进行 base64 编码,其值即为Policy表单域该填入的值,并将该值作为将要签名的字符串。
  • 使用 AccessKeySecret 对要签名的字符串进行签名,先用hmac-sha1哈希,再base64编码,签名方法与 Header签名 的方法相同,如下所示。
    Signature = base64(hmac-sha1(AccessKeySecret, base64(policy)))
    计算出的签名在表单域Signature中指定,如下所示。
    Content-Disposition: form-data; name="Signature"
    {signature}
    --9431149156168
  • 如果您还有疑问,请参考示例代码:

    PostObject简介

    PostObject 用于通过HTML表单上传的方式将文件(Object)上传至指定存储空间(Bucket)。PostObject的消息实体通过多重表单格式(multipart/form-data)编码,在PutObject操作中参数通过HTTP请求头传递,在PostObject操作中则作为消息体中的表单域传递。详细说明请参见 RFC 2388 。PostObject消息包括消息头(Header)和消息体(Body)。Header和Body之间由 \r\n--{boundary} 分割。Body由一系列的表单域构成,表单域格式如下所示。

    Content-Disposition: form-data; name="{key}"\r\n\r\n{value}\r\n--{boundary}

    常见的Header有Host、User-Agent、Content-Length、Content-Type、Content-MD5等,表单域字段有Key、OSSAccessKeyId、Signature、Content-Disposition、object meta(x-oss-meta-*)、x-oss-security-token、其它HTTP Header(Cache-Control、Content-Type、Cache-Control、Content-Type、Content-Disposition、Content-Encoding、Expires、Content-Encoding、Expires)、file等。表单域中 file 必须是最后一个域。更多关于PostObject的介绍请参见 PostObject

  • PostObject
  • C# Post Demo
  • Java Post Demo
  • JavaScript Post Demo
  • 对象存储OSS
  • 关于此文档暂时还没有FAQ