Append Upload

最終更新日:2025-08-18 15:31:59

Appendアップロードインターフェースを使用すると、ユーザーはコンテンツを直接オブジェクトに追記(append)でき、それぞれのアップロードデータは即時に読み取り可能です。この方法で操作されるオブジェクトは「Appendableオブジェクト」と呼ばれます。

リクエスト説明

トークンの計算方法およびアップロードポリシーの定義は、通常のアップロードインターフェースと同一です。各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 append方式のアップロードであることを示します。 はい
position 追記の位置およびAppendableオブジェクトのサイズを示します。 はい

リクエストヘッダー

ヘッダー名 必須 説明
Host はい Upload domain name。コンソールのBucket Overviewインターフェースより取得できます。
Content-Length はい 追記する内容の長さ
Content-Type はい 標準MIMEタイプ。
型:string。
固定値:multipart/form-data。

フォームパラメータ説明

パラメータ 必須 説明
<token> はい Upload Credential
<x:VariableName> いいえ カスタム変数名の値。
<key> いいえ カスタムファイル名
<mimeType> いいえ カスタムファイルMIME-Type。
<deadline> いいえ ファイルの保持日数。この日数を超えると自動的に削除されます。単位:日。例:1, 2, 3…
注: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 はい 次の追記位置を示します。
型:String。
x-wcs-object-type はい オブジェクトの種類を示します。appendfromfileの場合はAppendable、通常のオブジェクトの場合はNormalです。
型:string。

レスポンスボディ
リクエストが成功した場合、*<ResponseContent>*には以下のURL-Safe Base64 Encoding形式が含まれます。

hash=<filehash>

フィールド名 必須 説明
<filehash> はい ファイルのハッシュ値

注:アップロード時にreturnBodyを定義した場合、returnBodyも追加されます。例:name=&size=hash=
リクエストが失敗した場合、<ResponseContent>には以下のJson文字列が返されます。

{
    "code":     "<code string>",
    "message":  "<message string>"
}

フィールド名 必須 説明
code はい HTTPリクエストレスポンスコード。詳細はHTTP Response Status Codeを参照。
message はい メッセージ。

使用例

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

実装上の注意

  1. append操作を示すため、URLパラメータには必ずappendが含まれている必要があります。
  2. どこに追記するかを示すため、URLパラメータには必ずpositionが必要です。初回の追記操作ではpositionは0、2回目以降はオブジェクトの現在長さと等しくなければなりません。条件が満たされない場合は409エラー(PositionNotEqualToLength)が返されます。このエラーが発生した際は、レスポンスヘッダーX-wCs-next-append-positionにより次のposition値を取得し、再度リクエストしてください。
  3. positionが0の場合、同名のappendableオブジェクトが存在しないか、同名appendableオブジェクトの長さが0の場合のみリクエストが成功します。それ以外の場合はPositionNotEqualToLengthとなります。
  4. 一度にappendできるオブジェクトの長さは2GBを超えられません。また、append操作のたびにオブジェクトの最終更新時刻が更新されます。
  5. 既存のappendableオブジェクトに対して、適切なpositionで長さが0の内容をappendした場合、操作自体は成功しますが、オブジェクトの状態は変わりません。
  6. append操作の実行中は、オブジェクトの同時追記はできません。
  7. append操作には、操作対象オブジェクトに対する書き込み権限が必要です。