---
title: "アップロード"
slug: "upload"
abstract: "アップロードAPI(V2)の使い方とアップロードプロセスの概要。"
---
# アップロード

Upload API(V2)では、Sitecore Content HubのウェブUI以外のクライアントからもコンテンツをアップロードできます。

[アップロードAPIの最新バージョンのOpenAPI定義にアクセスするAPI](https://api-docs.sitecore.com/ch/upload-api)

> !重要アップロードAPIは資産の大量アップロードを目的としていません。大量の並列アップロードはパフォーマンスに影響を与える可能性があります。Sitecore Content Hubの最適なパフォーマンスを確保するために、[パフォーマンス](https://doc.sitecore.com/ch/en/users/content-hub/performance.html) のベストプラクティスを確認してください。

Upload APIは以下のエンドポイントを公開します:

-   api/v2.0/upload - アップロードURLを要求する。
-   api/v2.0/upload/process - リクエストを実行します。
-   api/v2.0/upload/finalize - アップロードを完了します。

> !注10MBを超えるファイルをアップロードするには、「 [大きなファイルのアップロード](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload-large-files.html "Upload large files")」をご覧ください。アップロードURLの利用可能期間を変更するには、「 [アップロードURLの寿命を変更する」](https://doc.sitecore.com/ch/ja/developers/cloud-dev/update-the-configuration-settings.html "Update the configuration settings")をご覧ください。

## アップロード設定

アップロード設定は *、管理者* または *スーパーユーザーが* 定義したコンテキストで、ある種類のアップロードが許可される場合を指します。アップロード設定は、どのファイル拡張子が許可されるか、最大ファイルサイズ、どのリポジトリでアセットを作成すべきか、そしてどのステータスで作成すべきかなどをシステムに伝えます。

> !注 *最大許容ファイルサイズ* パラメータは、アップロード可能なファイルサイズを制限し、Azureの最大ブロブ制限は4.7TBです。

必要なパラメータはアップロード設定自体によって異なります。例えば、ロゴをアップロードしたい場合、アップロードロゴをどのテーマにリンクすべきかを示すパラメータ「 *theme* 」を含める必要があります。

### 支援された行動

ファイルに対して実行可能なサポートされたアクションは以下の通りです:

戦闘

概要

*NewAsset*

新しいアセットを作成し、アップロードしたファイルを新たに作成したアセットのメインファイルとして設定します。

*NewMainFile*

アップロード済みのファイルで既存アセットのメインファイルを変更すること;どのアセットを更新すべきかを指定するために **AssetId** アクションパラメータが必要です。

*NewAlternativeFile*

アップロード済みファイルで既存のアセットの代替ファイルを変更する;どのアセットを更新すべきかを指定するために **AssetId** アクションパラメータが必要。

*Import*

アップロードしたファイルをインポートとみなし、インポートジョブを実行します。

既存の構成は4種類あります。

### AssetUploadConfiguration

このサンプルペイロードはアセットをアップロードします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "NewAsset"
 },
 "upload\_configuration": {
 "name": "upload\_configuration\_name"
 }
}

依頼例:

{
 "file\_name": "asset.jpg",
 "file\_size": 12345,
 "action": {
 "name": "NewAsset"
 },
 "upload\_configuration": {
 "name": "AssetUploadConfiguration"
 }
}

このサンプルペイロードは新しいバージョンのアセットをアップロードします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "NewMainFile",
 "parameters": {
 "AssetId": "{the asset id}"
 }
 },
 "upload\_configuration": {
 "name": "upload\_configuration\_name"
 }
}

依頼例:

{
 "file\_name": "asset.jpg",
 "file\_size": 12345,
 "action": {
 "name": "NewMainFile",
 "parameters": {
 "AssetId": "40588"
 }
 },
 "upload\_configuration": {
 "name": "AssetUploadConfiguration"
 }
}

このサンプルペイロードは、アセットの代替サムネイルをアップロードします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "NewAlternativeFile",
 "parameters": {
 "AssetId": "{the asset id}"
 }
 },
 "upload\_configuration": {
 "name": "upload\_configuration\_name"
 }
}

依頼例:

{
 "file\_name": "asset.jpg",
 "file\_size": 12345,
 "action": {
 "name": "NewAlternativeFile",
 "parameters": {
 "AssetId": "40588"
 }
 },
 "upload\_configuration": {
 "name": "AssetUploadConfiguration"
 }
}

### ImportPackageConfiguration

このサンプルペイロードはパッケージをインポートします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Package"
 }
 },
 "upload\_configuration": {
 "name": "ImportPackageConfiguration"
 }
}

依頼例:

{
 "file\_name": "package.zip",
 "file\_size": 12345,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Package"
 }
 },
 "upload\_configuration": {
 "name": "ImportPackageConfiguration"
 }
}

### ImportLocalizationsConfiguration

このサンプルペイロードはローカリゼーションファイルをインポートします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Localization"
 }
 },
 "upload\_configuration": {
 "name": "ImportLocalizationsConfiguration"
 }
}

依頼例:

{
 "file\_name": "excel.xlsx",
 "file\_size": 12345,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Localization"
 }
 },
 "upload\_configuration": {
 "name": "ImportLocalizationsConfiguration"
 }
}

### ImportDataConfiguration

このサンプルペイロードはExcelファイルからデータをインポートします。

{
 "file\_name": "<FILENAME>",
 "file\_size": <FILE\_SIZE>,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Data"
 }
 },
 "upload\_configuration": {
 "name": "ImportDataConfiguration"
 }
}

依頼例:

{
 "file\_name": "excel.xlsx",
 "file\_size": 12345,
 "action": {
 "name": "Import",
 "parameters": {
 "Type": "Data"
 }
 },
 "upload\_configuration": {
 "name": "ImportDataConfiguration"
 }
}

## アップロードプロセス

アップロードプロセスは3つのステップから成り立っています。

1.  [アップロードをリクエストしてください](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318736067 "Request an upload")
2.  [アップロードを実行してください](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318764248 "Perform the upload")
3.  [アップロードを最終決定してください](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318777667 "Finalize the upload")

## アップロードをリクエストしてください

アップロードURLを取得するには、以下のパラメータでエンドポイントapi/v2.0/uploadに**POST**リクエストを送信します。

-   file\_name - アップロードするファイル *名* 。
-   file\_size - アップロードするファイル *のサイズ* 。
-   upload\_configuration - アップロード設定。
-   action - ファイルに対して実行するアクション。

{
 "file\_name":"<FILENAME>",
 "file\_size":"<FILE\_SIZE>",
 "upload\_configuration":{
 "name":"<UPLOAD\_CONFIGURATIION\_NAME>",
 "parameters":{
 ...
 }
 },
 "action":{
 "name":"<ACTION\_NAME>",
 "parameters":{
 ...
 }
 }
}

成功した応答はLocationヘッダーのアップロードURLを返し、これは [アップロードの実行](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318764248 "Perform the upload") ステップで使用されます。このアップロードURLにはキー、名前、有効期限、署名が記載されます(以下の例に似ています: /api/v2.0/upload/process?key=local-64215f47c&name=Upload\_c3de2f26-8b22.jpg&expires=2020-11-20T17:00:53.1850293+00:00&signature=bQybo8zZb-Q)。

デフォルトではアップロードURLは5分間有効です。ただし、希望するM.UploadConfigurationエンティティのConfigurationSettingsプロパティにupload\_url\_lifetime\_in\_minutesを加えることで、最大1440分(24時間)まで時間を延長できます。アップロードリクエストに関連するすべてのチャンクのアップロードは、リンクが失効する前に完了しなければなりません。

応答は以下の情報を含むJSONボディも返します。

-   upload\_identifier - アップロードジョブの *識別子* 。
-   file\_identifier - システム内のファイルの *識別子* 。

{
 "upload\_identifier": "<UPLOAD\_ID>",
 "file\_identifier": "<FILE\_ID>"
}

## アップロードを実行してください

アップロード[をリクエスト](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318736067 "Request an upload")するステップのLocationヘッダーURLを使い、アップロード用のファイルをform-dataとして添付した**POST**リクエストを作成します。

以下の例はファイルのアップロードを示しています:

curl https://<HOSTNAME>/api/v2.0/upload/process?key=local-64215f47c&name=Upload\_c3de2f26-8b22.jpg&expires=2020-11-20T17:\`00:53\`.1850293+\`00:00\`&signature=bQybo8zZb-Q \\
 -H "Authorization: <BEARER\_TOKEN>" \\
 -H "Content-Type: multipart/form-data" \\
 -F "file=@image.png"

## アップロードを最終決定してください

アップロードを最終決定するには、[Request a upload](https://doc.sitecore.com/ch/ja/developers/cloud-dev/upload.html#UUID-62588c53-1905-f0c7-90a0-b614b7b804bd_N1728318736067 "Request an upload")ステップで受信したJSON応答本体をapi/v2.0/upload/finalizeエンドポイントに**POST**リクエストを送信します。

-   **upload\_identifier** - アップロードジョブの *識別子* 。
-   **file\_identifier** - システム内のファイルの *識別子* 。

{
 "upload\_identifier": "<UPLOAD\_ID>",
 "file\_identifier": "<FILE\_ID>"
}

成功した対応の構造は以下の通りです。

{
 "success": <Boolean>,
 "message": <optional text message>,
 "asset\_id": <ASSET\_ID>,
 "asset\_identifier": <assetIdentifier>
}

回答には以下の内容が含まれています。

-   **成功** - アップロードの状況
-   **メッセージ** - 任意のエラーまたは応答メッセージ
-   **asset\_id** - 資産を識別する数値
-   **asset\_identifier** - 資産の大文字を区別する文字列識別子

以下のPowershell 7の例は、アップロードスクリプトの設定方法を示しています:

$authToken = "Bearer xyz"
$hostName = "https://url.sitecorecontenthub.cloud"

$fileName = "test.jpg"
$filePath = "test.jpg"
$fileSize = 2492578

# create request
$createAssetBody = @{
 file\_name = $fileName
 file\_size = $fileSize
 upload\_configuration = @{
 name = "AssetUploadConfiguration"
 }
 action = @{
 name = "NewAsset"
 }
} | ConvertTo-Json

$createUrl = $hostName + "/api/v2.0/upload"

$createResponse = Invoke-WebRequest -Uri $createUrl -Method 'POST' -Body $createAssetBody -H @{"Authorization" = $authToken; "Content-Type" = "application/json"}

# upload request

$uploadUrl = $createResponse.Headers.Location0

$fileStream = System.IO.FileStream::new($filePath, System.IO.FileMode::Open)
$fileHeader = System.Net.Http.Headers.ContentDispositionHeaderValue::new('form-data')
$fileHeader.Name = $fileName
$fileHeader.FileName = Split-Path -leaf $filePath
$fileContent = System.Net.Http.StreamContent::new($fileStream)
$fileContent.Headers.ContentDisposition = $fileHeader
$fileContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue::Parse("text/plain")

$multipartContent = System.Net.Http.MultipartFormDataContent::new()
$multipartContent.Add($fileContent)

Invoke-WebRequest -Body $multipartContent -Method 'POST' -Uri $uploadUrl -Headers @{"Authorization" = $authToken}

$fileStream.Close()

# finalize request

$finalizeUrl = $hostName + "/api/v2.0/upload/finalize"

Invoke-WebRequest -Uri $finalizeUrl -Method 'POST' -Body $createResponse.Content -H @{"Authorization" = $authToken; "Content-Type" = "application/json"}