使用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