첨부 파일 바꾸기

AtomPub 프로토콜과 같이 미디어 콘텐츠를 Azure Cosmos DB에 배치하거나 외부에 저장된 미디어에 첨부 파일 메타데이터만 배치하는 두 가지 방법으로 첨부 파일 리소스를 대체할 수 있습니다.

첫 번째는 원시 미디어를 본문 페이로드에 넣어 Cosmos DB 계정 아래 제공된 첨부 파일 스토리지에 저장하는 것입니다. 이러한 유형의 첨부 파일을 대체하기 위해 개발자는 원시 첨부 파일(비디오, 오디오, 파일, Blob 등)을 PUT 본문으로 포함합니다. Content-Type 및 Slug의 두 헤더를 설정해야 합니다. Content-Type 헤더는 첨부 파일의 MIME 형식으로 설정되고 Slug 헤더는 첨부 파일 이름으로 설정됩니다.

첨부 파일 리소스를 바꾸는 두 번째 방법은 첨부 파일의 형식 및 미디어 링크를 나타내는 첨부 파일 리소스 속성을 배치하는 것입니다. 이 방법에서는 첫 번째 첨부 파일 리소스 유형과는 달리 원시 미디어가 요청 페이로드의 일부분이 아니므로 Content-Type 및 Slug 헤더가 설정되지 않습니다.

요청

메서드 요청 URI 설명
PUT https:// {databaseaccount}.documents.azure.com/dbs/{db-id}/colls/{coll-id}/docs/{doc-name}/attachments/{att-name} {databaseaccount}는 구독에서 만든 Cosmos DB 계정의 이름입니다. {db-id} 값은 시스템 생성 ID(rid)가 아니라 사용자가 생성한 데이터베이스의 이름/ID입니다. {coll-id} 값은 문서에 포함된 컬렉션의 이름입니다. {doc-name} 값은 첨부 파일과 연결된 문서의 이름입니다. {att-name} 값은 바꿀 첨부 파일의 이름입니다.

헤더

모든 Cosmos DB 요청에 사용되는 헤더는 일반적인 Azure Cosmos DB REST 요청 헤더를 참조하세요.

헤더 필수 형식 설명
Slug 선택 사항 문자열 첨부 파일의 이름입니다. 원시 미디어가 Cosmos DB 첨부 파일 스토리지에 제출되는 경우에만 필요합니다. 자세한 내용은 AtomPub 프로토콜을 참조하세요.

본문

속성 필수 형식 Description
id 선택 사항 문자열 원시 미디어를 첨부할 때는 설정할 필요가 없습니다. 사용자 settable 속성입니다. 첨부 파일을 식별하는 고유한 이름입니다. 즉, 두 개의 첨부 파일이 동일한 ID를 공유하지 않습니다. ID는 255자를 초과하면 안됩니다.
contentType 선택 사항 문자열 원시 미디어를 첨부할 때는 설정할 필요가 없습니다. 사용자 settable 속성입니다. 첨부 파일의 콘텐츠 형식을 나타냅니다. 첨부 파일 비트를 본문으로 제출할 때 Cosmos DB는 contentTypeContent-Type 헤더에 설정된 형식으로 설정합니다.
미디어 선택 사항 문자열 원시 미디어를 첨부할 때는 설정할 필요가 없습니다. 첨부 파일이 있는 URL 링크 또는 파일 경로입니다.
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com"  
}  
  

응답

헤더

모든 Cosmos DB 응답 에서 반환되는 헤더는 일반적인 Azure Cosmos DB REST 응답 헤더를 참조하세요.

상태 코드

다음 표에는 이 작업에서 반환하는 일반적인 상태 코드가 나열되어 있습니다. 상태 코드의 전체 목록은 HTTP 상태 코드를 참조하세요.

HTTP 상태 코드 설명
200 정상 작업이 완료되었습니다.
400 잘못된 요청 JSON 본문이 잘못되었습니다. 누락된 중괄호나 따옴표를 확인하세요.
404 찾을 수 없음 바꿀 첨부 파일은 더 이상 리소스가 아닙니다. 즉, 첨부 파일이 삭제되었습니다.
409 충돌 첨부 파일에 제공된 ID는 기존 첨부 파일에 의해 촬영되었습니다.
413 엔터티가 너무 큼 요청의 문서 크기가 요청에서 허용되는 문서 크기를 초과했습니다.

본문

속성 설명
_제거 시스템 생성 속성입니다. 리소스 ID(_rid)는 리소스 모델의 리소스 스택에 따라 계층적인 고유 식별자입니다. 첨부 파일 리소스의 배치와 탐색용으로 내부에서 사용됩니다.
_ts 시스템 생성 속성입니다. 리소스가 마지막으로 업데이트된 시간의 타임스탬프를 지정합니다. 값은 타임스탬프입니다.
_self 시스템 생성 속성입니다. 고유한 주소를 지정할 수 있는 리소스의 URI입니다.
_etag 낙관적 동시성 제어에 필요한 리소스 etag 를 지정하는 시스템 생성 속성입니다.
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com",  
    "_rid": "Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_ts": 1449606442,  
    "_self": "dbs\/Sl8fAA==\/colls\/Sl8fALN4sw4=\/docs\/Sl8fALN4sw4CAAAAAAAAAA==\/attachments\/Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_etag": "\"0600abc2-0000-0000-0000-56673d2a0000\""  
}  
  

예제

PUT https://contosomarketing.documents.azure.com/dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d/attachments/image_id HTTP/1.1  
x-ms-session-token: 19  
x-ms-date: Tue, 08 Dec 2015 20:27:23 GMT  
authorization: type%3dmaster%26ver%3d1.0%26sig%3dKQWBkCCXyJ66fwBe9%2b%2b7oN7CSlIkMMyFEgimGDPawCs%3d  
Cache-Control: no-cache  
User-Agent: contoso/1.0  
x-ms-version: 2015-08-06  
Accept: application/json  
Host: contosomarketing.documents.azure.com  
Cookie: x-ms-session-token=19  
Content-Length: 281  
Expect: 100-continue  
  
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com"  
}  
  
HTTP/1.1 200 Ok  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Content-Type: application/json  
Content-Location: https://contosomarketing.documents.azure.com/dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d/attachments/image_id  
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Sun, 29 Nov 2015 19:20:18.154 GMT  
etag: "0600abc2-0000-0000-0000-56673d2a0000"  
x-ms-resource-quota: documentSize=10240;documentsSize=10485760;collectionSize=10485760;  
x-ms-resource-usage: documentSize=0;documentsSize=289;collectionSize=367;  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/volcanodb/colls/volcano1/docs/c3bb1fef-fcb1-56e3-0389-f88583c3ce0d  
x-ms-content-path: Sl8fALN4sw4CAAAAAAAAAA==  
x-ms-quorum-acked-lsn: 19  
x-ms-session-token: 20  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 9.9  
x-ms-serviceversion: version=1.5.57.3  
x-ms-activity-id: 8b8be54a-3c7e-4484-9f65-3a3d778347cc  
Set-Cookie: x-ms-session-token=20; Domain=contosomarketing.documents.azure.com; Path=/dbs/volcanodb/colls/volcano1  
x-ms-gatewayversion: version=1.5.57.3  
Date: Tue, 08 Dec 2015 20:27:24 GMT  
Content-Length: 299  
  
{  
    "id": "image_id_2",  
    "contentType": "image/jpg",  
    "media": "www.microsoft.com",  
    "_rid": "Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_ts": 1449606442,  
    "_self": "dbs\/Sl8fAA==\/colls\/Sl8fALN4sw4=\/docs\/Sl8fALN4sw4CAAAAAAAAAA==\/attachments\/Sl8fALN4sw4CAAAAAAAAAOnTcEc=",  
    "_etag": "\"0600abc2-0000-0000-0000-56673d2a0000\""  
}  
  

참고 항목