この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Blob データを挿入または更新する

sObject Basic InformationsObject Rows、または sObject Collections リソースを使用して、画像や PDF といった Salesforce のバイナリラージオブジェクト (blob) を挿入したり、更新したりできます。任意の型のファイルやバイナリデータを、blob 項目を含む任意の標準オブジェクトにアップロードできます。

blob データを挿入および更新するには、マルチパートリクエストボディを作成します。リクエストボディの最初のパートには、新しいレコードの説明や名前などの非バイナリ項目データが含まれます。2 つ目のパートには、アップロードするファイルのバイナリデータが含まれます。リクエストボディは、MIME マルチパートコンテンツタイプ標準に準拠する必要があります。詳細は、W3C 標準のマルチパートコンテンツタイプに関する説明を参照してください。

sObject Basic Information または sObject Rows リソースを使用する場合、アップロードの最大ファイルサイズは、ContentVersion オブジェクトの場合は 2 GB、使用可能な他のすべての標準オブジェクトの場合は 500 MB です。sObject Collections リソースを使用する場合、1 回の要求の全ファイルの最大合計サイズは 500 MB です。

非マルチパートメッセージを使用して blob データを挿入/更新できますが、テキストデータは 50 MB まで、base64 で符号化されたデータは 37.5 MB までに制限されます。

メモ

この後のセクションでは、マルチパートコンテンツタイプ要求を使用して blob データを挿入/更新する方法の例を示します。これらの例のリクエストボディでは、JSON 形式を使用しています。

blob データを含む Document の挿入

次の要求およびリクエストボディの例では、PDF ファイルのバイナリデータを含む Document レコードを作成します。リクエストボディでは、ファイル自体のバイナリデータだけではなく、FolderId など、Document オブジェクトに必要な他の項目データも指定します。

Salesforce に新規 Document レコード用の Folder レコードがない場合は、sObject Basic Information リソースを使用して作成してから、この例に従ってください。Folder レコードの Type 項目が Document であることを確認します。

要求を正常に送信すると、Salesforce Classic で新規 Document を表示できます。Salesforce Lightning のユーザインターフェースには、Document は表示されません。

ヒント

Document を作成する場合の要求の例
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/Document/ -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @NewDocument.json
Document を作成する場合のリクエストボディの例
このリクエストボディは、NewDocument.json のコンテンツを表します。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」���置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。
1--boundary_string
2Content-Disposition: form-data; name="entity_document";
3Content-Type: application/json
4
5{  
6    "Description" : "Marketing brochure for Q1 2011",
7    "Keywords" : "marketing,sales,update",
8    "FolderId" : "005D0000001GiU7",
9    "Name" : "Marketing Brochure Q1",
10    "Type" : "pdf"
11}
12
13--boundary_string
14Content-Type: application/pdf
15Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
16
17Binary data goes here.
18
19--boundary_string--
レスポンスボディの例
成功すると、新規 Document の ID が返されます。
1{
2    "id" : "015D0000000N3ZZIA0",
3    "errors" : [ ],
4    "success" : true
5}
エラー応答の例
1{
2    "fields" : [ "FolderId" ],
3    "message" : "Folder ID: id value of incorrect type: 005D0000001GiU7",
4    "errorCode" : "MALFORMED_ID"
5}

blob データを含む Document の更新

この例では、既存の Document レコードを更新します。リクエストボディのコンテンツに応じて、レコード項目とそれに関連付けられているバイナリデータのいずれかまたは両方を更新できます。

レコード項目のみを更新する場合は、リクエストボディにマルチパートコンテンツタイプは不要です。

Document オブジェクトのバイナリデータを更新する場合の要求の例
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/Document/015D0000000N3ZZIA0 -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @UpdateDocument.json -X PATCH
Document オブジェクトのバイナリデータを更新する場合のリクエストボディの例

このリクエストボディは、UpdateDocument.json のコンテンツを表します。この例では、レコードのバイナリデータと Name 項目および Keywords 項目を更新します。バイナリデータのみを更新する場合は、Name 項目と Keywords 項目を含むコード行を削除できます。

ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Updated document binary goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。

1--boundary_string
2Content-Disposition: form-data; name="entity_content";
3Content-Type: application/json
4
5{  
6    "Name" : "Marketing Brochure Q1 - Sales",
7    "Keywords" : "sales, marketing, first quarter"
8}
9
10--boundary_string
11Content-Type: application/pdf
12Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
13
14Updated document binary data goes here.
15
16--boundary_string--
Document オブジェクトの項目を更新する場合のレスポンスボディの例
戻り値なし
エラー応答
「状況コードとエラー応答」を参照してください。

ContentVersion の挿入

この例では、新規 ContentVersion を挿入します。ファイル自体のバイナリデータだけではなく、ReasonForChangePathOnClient など、他の項目の値も指定します。ContentVersion は、必ず ContentDocument に関連付けられているため、このメッセージには ContentDocumentId が含まれます。

ContentVersion オブジェクトは update をサポートしていません。したがって ContentVersion を更新することはできません。新しい ContentVersion を挿入することのみが可能です。変更の結果は、[コンテンツ] タブで確認できます。

ヒント

ContentVersion を挿入する場合の使用例
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/sobjects/ContentVersion -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @NewContentVersion.json
ContentVersion を挿入する場合のリクエストボディの例

このリクエストボディは、NewContentVersion.json ファイルの内容を表します。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。

1--boundary_string
2Content-Disposition: form-data; name="entity_content";
3Content-Type: application/json
4
5{
6    "ContentDocumentId" : "069D00000000so2",
7    "ReasonForChange" : "Marketing materials updated",
8    "PathOnClient" : "Q1 Sales Brochure.pdf"
9}
10
11--boundary_string
12Content-Type: application/octet-stream
13Content-Disposition: form-data; name="VersionData"; filename="Q1 Sales Brochure.pdf"
14
15Binary data goes here.
16
17--boundary_string--
ContentVersion を挿入する場合のレスポンスボディの例
1{
2    "id" : "068D00000000pgOIAQ",
3    "errors" : [ ],
4    "success" : true
5}
ContentVersion を挿入した場合のエラー応答
「状況コードとエラー応答」を参照してください。

sObject コレクションを使用した blob レコードのコレクションの挿入

この例では、新規 Document のコレクションを挿入します。ファイル自体のバイナリデータだけではなく、コレクションの各レコードの DescriptionName など、他の項目データも指定します。

要求を正常に送信すると、Salesforce Classic で新規 Document を表示できます。Salesforce Lightning のユーザインターフェースには、Document は表示されません。

ヒント

属性
blob データに sObject コレクションを使用する場合は、リクエストボディの属性の対応付けで type 以外にも特定の属性値を指定する必要があります。
パラメータ 説明
binaryPartName blob データでは必須です。バイナリパートの一意の識別子です。
binaryPartNameAlias blob データでは必須です。バイナリデータが挿入または更新される項目の名前です。
Document を作成する場合の例
1curl https://MyDomainName.my.salesforce.com/services/data/v59.0/composite/sobjects/ -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @newdocuments.json
Document を作成する場合のリクエストボディの例
このコードは、newdocuments.json のコンテンツです。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。
1--boundary_string
2Content-Disposition: form-data; name="collection"
3Content-Type: application/json
4
5{
6    "allOrNone" : false,
7    "records" :
8    [
9        {
10            "attributes" :
11            {
12                "type" : "Document",
13                "binaryPartName": "binaryPart1",
14                "binaryPartNameAlias": "Body"
15            },
16            "Description" : "Marketing Brochure",
17            "FolderId" : "005xx000001Svs4AAC",
18            "Name" : "Brochure",
19            "Type" : "pdf"
20        },
21        {
22            "attributes" :
23            {
24                "type" : "Document",
25                "binaryPartName": "binaryPart2",
26                "binaryPartNameAlias": "Body"
27            },
28            "Description" : "Pricing Overview",
29            "FolderId" : "005xx000001Svs4AAC",
30            "Name" : "Pricing",
31            "Type" : "pdf"
32        }
33    ]
34}
35
36--boundary_string
37Content-Disposition: form-data; name="binaryPart1"; filename="Brochure.pdf"
38Content-Type: application/pdf
39
40Binary data goes here.
41
42--boundary_string
43Content-Disposition: form-data; name="binaryPart2"; filename="Pricing.pdf"
44Content-Type: application/pdf
45
46Binary data goes here.
47
48--boundary_string--
Document を作成する場合のレスポンスボディの例
成功すると、新規 Document の ID が返されます。
1[
2    {
3        "id": "015xx00000013QjAAI",
4        "errors": [],
5        "success": true
6    },
7    {
8        "id": "015xx00000013QkAAI",
9        "errors": [],
10        "success": true
11    }
12]

詳細は、「sObject コレクション」を参照してください。

マルチパートメッセージの考慮事項

blob データを挿入/更新するときの、マルチパートメッセージの形式に関するいくつかの考慮事項を次に示します。

境界文字列
  • マルチパートリクエストボディの各パートを区分します。
  • マルチパートリクエストの Content-Type ヘッダーに指定する必要があります。
  • 70 文字まで入力できます。
  • リクエストボディのどの部分にも出現しない文字列値である必要があります。
  • 最初の境界文字列には、2 つのハイフン (--) プレフィックスを含めます。
  • 最後の境界文字列には、2 つのハイフン (--) サフィックスを含めます。
Content-Disposition ヘッダー
  • リクエストボディの各パートで必要です。
  • 値として form-data が必要です。また、name 属性も必要です。
    • リクエストボディの非バイナリパートでは、name 属性に任意の値を使用します。
    • 1 つの Document の場合、リクエストボディのバイナリパートで name 属性を使用して、オブジェクトの blob データ項目の名前を指定します。たとえば、Document オブジェクトの blob データ項目の名前は Body です。
    • sObject コレクションを使用して Document を挿入または更新する場合、リクエストボディの各バイナリパートで name 属性を使用して、そのパートの一意の識別子を指定します。これらの ID は、リクエストボディの非バイナリパートによって参照されます。
  • バイナリパートには、ローカルファイルの名前を表す filename 属性を含める必要があります。
Content-Type ヘッダー
  • マルチパートリクエストボディの各パートで必要です。
  • マルチパートリクエストボディの非バイナリパートでは、application/json および application/xml コンテンツタイプをサポートします。
  • マルチパートリクエストボディのバイナリパートでは、任意のコンテンツタイプをサポートします。
改行
マルチパートリクエストボディの各パートでは、ヘッダーとデータの間に改行を追加する必要があります。例に示されているように、Content-Type および Content-Disposition ヘッダーは、改行によって JSON またはバイナリデータから分離されています。