Chargement de ressources au moyen de POST HTTP vers le servlet UploadFile uploading-assets-by-way-of-http-posts-to-the-uploadfile-servlet
Le chargement de ressources dans Dynamic Media Classic implique une ou plusieurs requêtes HTTP POST qui configurent une tâche pour coordonner toute l’activité de journal associée aux fichiers chargés.
Utilisez l’URL suivante pour accéder au servlet UploadFile :
https://<server>/scene7/UploadFile
URL d’accès aux régions Dynamic Media
Workflow de la tâche de chargement section-873625b9512f477c992f5cdd77267094
La tâche de chargement se compose d’une ou de plusieurs requêtes HTTP POST qui utilisent une jobHandle commune pour mettre en corrélation le traitement dans la même tâche. Chaque requête est codée en multipart/form-data et se compose des parties de formulaire suivantes :
authfile paramsuploadPostParams/fileName n’est spécifié.uploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)companyHandlexsd:stringuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)jobNamexsd:stringjobName ou jobHandle. Nom de la tâche de chargement.uploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)jobHandlexsd:stringjobName ou jobHandle. Gérer vers une tâche de chargement démarrée dans une requête précédente.uploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)localexsd:stringuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)descriptionxsd:stringuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)destFolderxsd:stringuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)fileNamexsd:stringuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)endJobxsd:booleanuploadParams (obligatoire). Un document uploadParams XML spécifiant les paramètres de chargement)uploadParamstypes:UploadPostJobuploadParams est ignoré et les paramètres de chargement de tâche existants sont utilisés. Voir UploadPostJobDans le bloc <uploadPostParams> se trouve le bloc <uploadParams> qui désigne le traitement des fichiers inclus.
Voir UploadPostJob.
Bien que vous puissiez supposer que le paramètre uploadParams peut changer pour des fichiers individuels dans le cadre de la même tâche, ce n’est pas le cas. Utilisez les mêmes paramètres de uploadParams pour l’ensemble de la tâche.
La requête POST initiale d’une nouvelle tâche de chargement doit spécifier le paramètre jobName, de préférence en utilisant un nom de tâche unique afin de simplifier l’interrogation sur le statut des tâches et les requêtes de journal de tâches ultérieures. D’autres requêtes POST pour la même tâche de chargement doivent spécifier le paramètre jobHandle au lieu de jobName, à l’aide de la valeur jobHandle renvoyée par la requête initiale.
La requête POST finale pour une tâche de chargement doit définir le paramètre endJob sur true afin qu’aucun fichier ultérieur ne soit POST pour cette tâche. Cela permet à son tour à la tâche de se terminer immédiatement après l’ingestion de tous les fichiers POSTed. Dans le cas contraire, la tâche expire si aucune requête POST supplémentaire n’est reçue dans les 30 minutes.
Réponse UploadPOST section-421df5cc04d44e23a464059aad86d64e
Pour une requête POST réussie, le corps de la réponse est un document uploadPostReturn XML, comme le spécifie le schéma XSD dans ce qui suit :
<element name="uploadPostReturn">
<complexType>
<sequence>
<element name="jobHandle" type="xsd:string"/>
</sequence>
</complexType>
</element>
Le jobHandle renvoyé est transmis dans le paramètre uploadPostParams/ jobHandle pour toutes les requêtes POST suivantes pour le même traitement. Vous pouvez également l’utiliser pour interroger le statut des tâches avec l’opération getActiveJobs ou pour interroger les journaux de tâches avec l’opération getJobLogDetails.
En cas d’erreur lors du traitement de la requête POST, le corps de la réponse se compose de l’un des types d’erreurs d’API décrits à la section Erreurs.
Exemple de requête POST section-810fe32abdb9426ba0fea488dffadd1e
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--
Exemple de réponse POST - succès section-0d515ba14c454ed0b5196ac8d1bb156e
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>
Exemple de réponse POST - erreur section-efc32bb371554982858b8690b05090ec
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>