HTTP POST を使用した UploadFile サーブレットへのアセットのアップロード
作成対象:
- 開発者
- 管理者
Dynamic Media Classicへのアセットのアップロードには 1 つ以上の HTTP POSTリクエストが関与し、アップロードされたファイルに関連付けられたすべてのログアクティビティを調整するジョブを設定します。
次の URL を使用して、UploadFile サーブレットにアクセスします。
https://<server>/scene7/UploadFile
Dynamic Media リージョンのアクセス URL
地理的位置 | 実稼動 URL | ステージング URL (実稼動前の開発およびテストに使用) |
---|---|---|
北米 | https://s7sps1ssl.scene7.com/scene7/UploadFile | https://s7sps1ssl-staging.scene7.com/scene7/UploadFile |
ヨーロッパ、中東、アジア | https://s7sps3ssl.scene7.com/scene7/UploadFile | https://s7sps3ssl-staging.scene7.com/scene7/UploadFile |
日本/アジア太平洋 | https://s7sps5ssl.scene7.com/scene7/UploadFile | https://s7sps5ssl-staging.scene7.com/scene7/UploadFile |
アップロードジョブのワークフロー
アップロードジョブは、共通の jobHandle
を使用して処理を同じジョブに関連付ける 1 つ以上の HTTP POST で構成されます。 各リクエストは multipart/form-data
にエンコードされ、次のフォーム部分で構成されます。
HTTPPOSTフォーム部分 | 説明 |
---|---|
auth | 必須。 認証およびクライアント情報を指定する XML authHeader ドキュメント。 2}SOAP の「リクエスト認証 🔗」を参照してください。 |
file params | オプション。 POSTのリクエストごとに、アップロードする 1 つ以上のファイルを含めることができます。 各ファイル部分には、Content-Disposition ヘッダーに filename パラメーターを含めることができます。このパラメーターは、uploadPostParams/fileName パラメーターが指定されていない場合に、IPS でターゲットファイル名として使用されます。 |
HTTPPOSTフォーム部分 | uploadPostParams 要素名 | タイプ | 説明 |
---|---|---|---|
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | companyHandle | xsd:string | 必須。 ファイルのアップロード先の会社を表すハンドル。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | jobName | xsd:string | jobName または jobHandle のいずれかが必要です。 アップロードジョブの名前。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | jobHandle | xsd:string | jobName または jobHandle のいずれかが必要です。 前のリクエストで開始されたアップロードジョブへのハンドル。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | locale | xsd:string | オプション。 ローカライゼーションの言語と国コード。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | description | xsd:string | オプション。 ジョブの説明。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | destFolder | xsd:string | オプション。 ファイル名プロパティのプレフィックスとして使用されるターゲットフォルダーパス。特に、ファイル名でフルパスをサポートしていないブラウザーや他のクライアントの場合に有効です。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | fileName | xsd:string | オプション。 ターゲットファイルの名前。 filename プロパティを上書きします。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | endJob | xsd:boolean | オプション。 初期設定は false。 |
uploadParams (必須。 アップロードパラメーターを指定する XML uploadParams ドキュメント) | uploadParams | types:UploadPostJob | 既存のアクティブなジョブに対する後続のリクエストである場合はオプションです。 既存のジョブがある場合、uploadParams は無視され、既存のジョブアップロードパラメーターが使用されます。 UploadPostJob を参照してください |
<uploadPostParams>
ブロック内には、含まれるファイルの処理を指定する <uploadParams>
ブロックがあります。
UploadPostJob を参照してください。
uploadParams
のパラメータは、同じジョブの一部として個々のファイルに対して変更される可能性があると仮定しますが、そうではありません。 ジョブ全体に同じ uploadParams
パラメーターを使用します。
新しいアップロードジョブに対する最初のPOSTリクエストでは、jobName
パラメーターを指定する必要があります。一意のジョブ名を使用すると、その後のジョブステータスポーリングやジョブログクエリを簡単に実行できるようになります。 同じアップロードジョブに対する追加のPOSTリクエストでは、最初のリクエストから返された jobHandle
値を使用して、jobName
ではなく jobHandle
パラメーターを指定する必要があります。
アップロードジョブの最後のPOSTリクエストでは、endJob
パラメーターを true に設定して、このジョブに対して今後ファイルが POST されないようにする必要があります。 これにより、すべての POSTed ファイルが取り込まれた直後にジョブが完了します。 それ以外の場合、30 分以内に追加のPOSTリクエストを受信しないと、ジョブはタイムアウトします。
UploadPOST 応答
リクエストが成功した場合、XSD が次のように指定するように、POST本文は XML uploadPostReturn
ドキュメントです。
<element name="uploadPostReturn">
<complexType>
<sequence>
<element name="jobHandle" type="xsd:string"/>
</sequence>
</complexType>
</element>
返された jobHandle
は、同じジョブに対する後続のPOSTリクエストの uploadPostParams
/ jobHandle
パラメーターに渡されます。 また、getActiveJobs
操作でジョブステータスをポーリングしたり、getJobLogDetails
操作でジョブのログをクエリしたりすることもできます。
POSTリクエストの処理中にエラーが発生した場合、レスポンス本文は、Faults に記載されている API フォールトタイプのいずれかから構成されます。
POSTリクエストの例
POST /scene7/UploadFile HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Host: localhost
Content-Length: 362630
Content-Type: multipart/form-data; boundary=O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ
--O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ
Content-Disposition: form-data; name="auth"
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
<authHeader xmlns="http://www.scene7.com/IpsApi/xsd/2014-04-03">
<user>sampleuser@test.com</user>
<password>*</password>
<locale>en-US</locale>
<appName>MyUploadServletTest</appName>
<appVersion>1.0</appVersion>
<faultHttpStatusCode>200</faultHttpStatusCode>
</authHeader>
--O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ
Content-Disposition: form-data; name="uploadParams"
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 8bit
<uploadPostParam xmlns="http://www.scene7.com/IpsApi/xsd/2014-04-03">
<companyHandle>c|2101</companyHandle>
<jobName>uploadFileServlet-1376682217351</jobName>
<uploadParams>
<overwrite>true</overwrite>
<readyForPublish>true</readyForPublish>
<preservePublishState>true</preservePublishState>
<createMask>true</createMask>
<preserveCrop>true</preserveCrop>
<manualCropOptions>
<left>500</left>
<right>500</right>
<top>500</top>
<bottom>500</bottom>
</manualCropOptions>
<photoshopOptions>
<process>MaintainLayers</process>
<layerOptions>
<layerNaming>AppendNumber</layerNaming>
<anchor>Northwest</anchor>
<createTemplate>true</createTemplate>
<extractText>true</extractText>
<extendLayers>false</extendLayers>
</layerOptions>
</photoshopOptions>
<emailSetting>None</emailSetting>
</uploadParams>
</uploadPostParam>
--O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ--
Content-Disposition: form-data; name="file1"; filename="ApiTestCo1/UploadFileServlet1376682217351//1376682217351-1.jpg"
Content-Type: application/octet-stream; charset=ISO-8859-1
Content-Transfer-Encoding: binary
<file bytes ... >
--O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ--
Content-Disposition: form-data; name="file2"; filename="ApiTestCo1/UploadFileServlet1376682217351//1376682217351-2.jpg"
Content-Type: application/octet-stream; charset=ISO-8859-1
Content-Transfer-Encoding: binary
<file bytes ... >
--O9-ba7tieRtqA4QRSaVk-eDq6658SPrYfvUcJ--
POSTの応答の例 – 成功
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Content-Length: 204
Date: Mon, 25 Jul 2016 19:43:38 GMT
Server: Unknown
'1.0' encoding='UTF-8'?><uploadPostReturn xmlns="http://www.scene7.com/IpsApi/xsd/2014-04-03">
<jobHandle>j|2101||uploadFileServlet-1376682217351|54091</jobHandle>
</uploadPostReturn>
POSTの応答の例 – エラー
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Content-Length: 210
Date: Mon, 25 Jul 2016 19:43:38 GMT
Server: Unknown
<?xml version='1.0' encoding='UTF-8'?><tns:authenticationFault xmlns:tns="http://www.scene7.com/IpsApi/xsd"><tns:code>10001</tns:code><tns:reason>Invalid username/password</tns:reason></tns:authenticationFault>