CDN加速

追加上传

更新时间:2021-07-22 15:05:04

追加上传

描述

追加上传接口支持用户通过追加的方式在一个object后面直接追加内容的功能,每次追加上传的数据都能够即时可读。通过这种方式操作的object为Appendable Object。

请求说明

Token的计算,上传策略的定义和跟普通上传接口保持一致。每次append操作按照普通上传的上传策略完成。
请求样式

POST /append/<position>
Host: <UploadDomain>
Content-Length:<appendSize>
Content-Type: multipart/form-data; boundary=<boundary>

--<boundary>
Content-Disposition: form-data; name="token"

<uploadToken>
--<boundary>
Content-Disposition:       form-data; name="<x:VariableName>"

<x:VariableValue>
--<boundary>
Content-Disposition: form-data; name="key"
    
<key>
--<boundary>
Content-Disposition: form-data; name="mimeType"
    
<mimeType>
--<boundary>
Content-Disposition: form-data; name="deadline"
    
<deadline>
--<boundary>
Content-Disposition: form-data; name="file"; filename="原文件名"
Content-Type: application/octet-stream
    
<fileBinaryData>
--<boundary>--

请求消息参数

参数名称 描述 是否必选
append 表明这是追加上传方式。
position 表明从何处追加,追加对象大小。

请求头部

头部名称 必填 描述
Host 上传域名,可在用户管理界面获取。
Content-Length 追加内容大小。
Content-Type 标准的MIME类型。
类型:字符串。
固定值:multipart/form-data。

表单说明

|参数|必填|描述|
|–|||
|<token>|是|上传凭证。|
|<x:VariableName>|否|自定义变量的值名称。|
|<x:VariableValue>|否|自定义变量的值。|
|<key>|否|自定义文件名。|
|<mimeType>|否|自定义文件的MIME-Type。|
|<deadline>|否|文件保存期限。超过保存天数文件自动删除,单位:天。例如:1、2、3……
注:0表示尽快删除,上传文件时建议不配置为0。|
|<file>|是|文件本身。|
|<fileBinaryData>|是|文件的二进制流。|

响应说明

响应样式

HTTP/1.1 status_code
x-wcs-next-append-position:object size
x-wcs-object-type:Appendable
Server: WS-web-server
<ResponseContent>

响应消息头

头部名称 必填 描述
x-wcs-next-append-position 表明下一次追加的位置。
字符串。
x-wcs-object-type 表明对象类型,追加上传的类型为Appendable,非追加上传的均为Normal。
类型:字符串。

响应消息体

如果请求成功,<ResponseContent>为如下内容的URL安全的Base64编码字符串:

hash=<filehash>
字段名 必填 描述
<filehash> 文件哈希值。

注:如果上传时定义了returnBody,则返回内容中会增加returnBody的内容,如 name=<filename>&size=<filesize>hash=<filehash>

如果请求失败,<ResponseContent>为如下内容的Json字符串:

{
    "code":     "<code string>",
    "message":  "<message string>"
}
字段名 必填 描述
code HTTP请求响应码,参见HTTP响应状态码
message 提示信息。

细节分析

  1. URL参数必须包含append,用来指定这是一个追加操作。
  2. URL参数必须包含position,其值指定从何处进行追加。首次追加操作的position必须为0,后续追加操作的position必须是Object的当前长度,否则返回409,错误码PositionNotEqualToLength。发生上述错误时,用户可以通过响应头部x-wcs-next-append-position来得到下一次position,并再次进行请求。
  3. 当position为0,如果没有同名appendable object,或者同名appendable object长度为0,则该请求成功,其他情况都认为是PositionNotEqualToLength。
  4. 每次append object的长度不能超过2G,每次append object都会更新object的最后修改时间。
  5. 在position值正确的情况下,对已存在的appendable object追加一个长度为0的内容,该操作成功,不会改变object的状态。
  6. 追加操作时不允许并发追加一个对象。
  7. 追加操作要求对操作Object要有写权限。

范例

curl -v -i -X POST -H "Expect:" -F file=@D:/8.png -F key=m.png -F token="6a69ab4062cb03059e4c13a0f5e662523effad49:ZGE1MWY1YzA4ZDgyMjVlM2Q3MmE2YjZkZDI3MmY1ZmMxNjk2YTFjOA==:eyJzY29wZSI6InRlc3QiLCJkZWFkbGluZSI6IjE0NzIxNzY2MzQwMDAiLCJvdmVyd3JpdGUiOjAsImZzaXplTGltaXQiOjAsImluc3RhbnQiOjAsInNlcGFyYXRlIjowfQ=="  --url http://uploaddomain.com/append/0