Append Upload

최신 업데이트:2025-08-18 15:31:59

Append Upload 인터페이스는 사용자가 오브젝트(객체)에 콘텐츠를 직접 추가(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, 콘솔의 버킷 개요(Overview) 화면에서 확인 가능
Content-Length append 데이터의 길이
Content-Type 표준 MIME 타입.
타입: string.
고정 값: multipart/form-data.

폼 설명

파라미터 필수 여부 설명
<token> Upload Credential
<x:VariableName> 아니오 사용자 정의 변수명
<key> 아니오 Custom filename
<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 다음 append의 위치를 나타냄
문자열(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. URL 파라미터에 append가 반드시 포함되어야 하며, append 동작임을 나타냅니다.
  2. URL 파라미터에 position이 반드시 포함되어야 하며, 데이터를 추가할 위치를 나타냅니다. 첫 append 작업의 position은 0이어야 하며, 이후 append 작업의 position은 오브젝트의 현재 길이와 일치해야 합니다. 그렇지 않으면 409 에러와 함께 PositionNotEqualToLength 에러 코드가 반환됩니다. 이 에러가 발생하면, 사용자는 응답 헤더 x-wcs-next-append-position 값을 확인하여 해당 위치로 다시 요청할 수 있습니다.
  3. position이 0인 경우, 같은 이름의 appendable 오브젝트가 없거나 또는 길이가 0인 경우에는 요청이 성공합니다. 그 외 상황에서는 PositionNotEqualToLength가 반환됩니다.
  4. 한 번의 append를 통해 추가되는 데이터의 길이는 2GB를 초과할 수 없습니다. append 동작마다 오브젝트의 최종 수정 시간이 갱신됩니다.
  5. 이미 존재하는 appendable 오브젝트에, 위치값이 올바르고 append 데이터의 길이가 0인 경우에도 요청은 성공하지만 오브젝트 상태는 변경되지 않습니다.
  6. append 작업 도중에는 해당 오브젝트에 대한 동시 append가 허용되지 않습니다.
  7. append 작업을 하려면, 해당 오브젝트에 대한 쓰기 권한이 필요합니다.
이 문서의 내용이 도움이 되었습니까?
아니오
정상적으로 제출되었습니다.피드백을 주셔서 감사합니다.앞으로도 개선을 위해 노력하겠습니다.