此POST操作将使用HTML表单为指定的空间添加一个对象。POST是PUT的另外一种选择,为了方便用户空间可以基于浏览器的上传对象。 参数通过POST以表单域的形式将数据编码封装到消息体传递,而不是PUT方式。用户需要拥有对空间的写权限才能添加新的对象。
KS3不会添加不完整对象,如果你收到成功的响应,那么KS3已经成功添加对象到响应空间中。
KS3是一个分布式系统。如果同时受到多个相同的对象的写请求,它会覆盖所有相同对象,只保留最后一个对象。KS3不提供在写对象时,为对象加锁服务,如果你确实需要,请在你的应用层实现它。
POST / HTTP/1.1
Host: {BucketName}.kss.ksyun.com
User-Agent: browser_data
Accept: file_types
Accept-Language: Regions
Accept-Encoding: encoding
Accept-Charset: character_set
Keep-Alive: 300
Connection: keep-alive
Content-Type: multipart/form-data; boundary=9431149156168
Content-Length: length
--9431149156168
Content-Disposition: form-data; name="key"
{ObjectKey}
--9431149156168
Content-Disposition: form-data; name="KSSAccessKeyId"
{AccessKey}
--9431149156168
Content-Disposition: form-data; name="Policy"
{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 KS3
--9431149156168--
该请求不使用请求参数。
该请求只使用常用请求头部。获取更多信息,请点击常用请求头部
名称 | 描述 | 必需 |
---|---|---|
acl | 指定访问控制权限,如果指定的访问权限列表无效,则会返回错误。 类型: String 默认值: private 有效值: private &##124; public-read |
否 |
Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires | REST 特别头部. 更多信息,请查看PUT Object 。类型: String 默认值: 无 |
否 |
file | 文件或文本内容。用户每次只能上传一个文件,且内容必须放到最后一个表单域中。 类型: 文件或文本内容 默认值: 无 |
是 |
key | ObjectKey。如果用户想要使用文件名作为Key,可以使用${filename} 变量。例如:如果用户想要上传文件local.jpg,需要指明specify /user/betty/${filename} ,那么键值就会为/user/betty/local.jpg 。类型: String 默认值: 无 |
是 |
KSSAccessKeyId | KSSAccessKeyId。 类型:String 默认值:无 约束条件:当 bucket 非 public-read-write 或者提供了policy表单域时,必须提供该表单域。 |
视情况而定 |
policy | 请求中用于描述获准行为的安全策略。没有安全策略的请求被认为是匿名请求,只能访问公共可写空间。 类型: String 默认值: 无 约束条件: 当 bucket 非 public-read-write.必须提供该表单域。 详见:Post Policy |
视情况而定 |
signature | 根据Access Key Secret和policy计算的签名信息,KS3验证该签名信息从而验证该Post请求的合法性。 类型: String 默认值: 无 约束条件: 当 bucket 非 public-read-write 或者提供了policy表单域时,必须提供该表单域。详见:Post Policy |
视情况而定 |
success_action_redirect, redirect | 成功上传后客户端的重定向URL。如果用户没有指定success_action_redirect ,KS3将会返回空文件类型。 如果KS3无法解析URL地址,那么会无视此表单域。如果上传失败,KS3不会将客户端重定向。类型: String 默认值: 无 |
否 |
success_action_status | 返回的状态码,如果没有指定,则依赖于上传的成功状态。允许值为200,,201,204(默认值)。如果是200或204,KS3将返回一个状态为200或204的空文件。如果状态码为201,那么KS3将会返回一个状态码为201的XML文档。如果值无效,或者没有设定,KS3将会返回一个状态码为204的空文档。 类型: String 默认值: 无 |
否 |
x-kss-meta- | 用户元数据前缀标识。若某个头部前缀为 x-kss-meta- , 则为用户自定义元数据。类型:String 默认值:无 约束条件:无 |
否 |
x-kss-storage-class | 设置文件的存储类型。 类型:String 默认值:无 有效值:STANDARD 约束条件:无 |
否 |
如果用户需要服务器使用默认加密,需要以下表单项
名称 | 描述 | 必需 |
---|---|---|
x-kss-server-side-encryption | 如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。类型:String |
是 |
如果用户需要服务器按照用户提供的秘钥加密,需要以下头部
名称 | 描述 | 必需 |
---|---|---|
x-kss-server-side-encryption-customer-key | 由用户指定KS3加密时使用的 base64-encoded 加密秘钥。类型:String 约束:需要和有效的 x-kss-server-side-encryption-customer-algorithm ,x-kss-server-side-encryption-customer-key-MD5 同时使用 |
是 |
x-kss-server-side-encryption-customer-algorithm | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。 类型:String 有效值:AES256 约束:需要和有效的 x-kss-server-side-encryption-customer-key ,x-kss-server-side-encryption-customer-key-MD5 同时使用 |
是 |
x-kss-server-side-encryption-customer-key-MD5 | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。 类型:String 约束:需要和有效的 x-kss-server-side-encryption-customer-key ,x-kss-server-side-encryption-customer-algorithm 同时使用 |
是 |
该接口可以使用所有常用响应头部。获取更多信息,请点击常用响应头部。
名称 | 描述 |
---|---|
success_action_redirect, redirect | 成功上传后客户端的重定向URL。 类型:String 父节点:PostResponse |
x-kss-server-side-encryption | 如果存储 object 时使用了服务端加密,则响应会包含该头部,值为使用的加密算法。类型:String |
x-kss-server-side-encryption-customer-algorithm | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来确认使用的解密算法。 类型:String 有效值:AES256 |
x-kss-server-side-encryption-customer-key-MD5 | 如果服务端使用了用户提供的加密秘钥加密,在请求解密时,响应将会包含该头部来提供用户提供加密秘钥的数据一致性验证信息。 类型:String |
该请求不返回任何特殊错误。
必须
包含表单中除KSSAccessKeyId、policy、signature和file外的所有表单项。