Caricamento di risorse tramite HTTP POST nel servlet UploadFile uploading-assets-by-way-of-http-posts-to-the-uploadfile-servlet
Il caricamento di risorse in Dynamic Media Classic comporta una o più richieste HTTP POST che impostano un processo per coordinare tutte le attività di registro associate ai file caricati.
Utilizza il seguente URL per accedere a UploadFile Servlet:
https://<server>/scene7/UploadFile
            URL di accesso per le aree Dynamic Media
Flusso di lavoro del processo di caricamento section-873625b9512f477c992f5cdd77267094
Il processo di caricamento è costituito da uno o più POST HTTP che utilizzano un jobHandle comune per correlare l'elaborazione nello stesso processo. Ogni richiesta è codificata multipart/form-data ed è costituita dalle seguenti parti di modulo:
authfile paramsuploadPostParams/fileName.uploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)companyHandlexsd:stringuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)jobNamexsd:stringjobName o jobHandle. Nome del processo di caricamento.uploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)jobHandlexsd:stringjobName o jobHandle. Gestisci un processo di caricamento avviato in una richiesta precedente.uploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)localexsd:stringuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)descriptionxsd:stringuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)destFolderxsd:stringuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)fileNamexsd:stringuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)endJobxsd:booleanuploadParams (obbligatorio. Un documento XML uploadParams che specifica i parametri di caricamento)uploadParamstypes:UploadPostJobuploadParams viene ignorato e vengono utilizzati i parametri di caricamento del processo esistenti. Vedi UploadPostJobAll'interno del blocco <uploadPostParams> è presente il blocco <uploadParams> che indica l'elaborazione dei file inclusi.
Vedi UploadPostJob.
Anche se è possibile presumere che il parametro uploadParams possa cambiare per singoli file come parte dello stesso processo, non è così. Utilizzare gli stessi uploadParams parametri per l'intero processo.
La richiesta POST iniziale per un nuovo processo di caricamento deve specificare il parametro jobName, preferibilmente utilizzando un nome di processo univoco per semplificare il polling dello stato e le query del registro di processo successivi. Ulteriori richieste POST per lo stesso processo di caricamento devono specificare il parametro jobHandle invece di jobName, utilizzando il valore jobHandle restituito dalla richiesta iniziale.
La richiesta POST finale per un processo di caricamento deve impostare il parametro endJob su true in modo che non vengano creati file POST futuri per questo processo. A sua volta, questo consente il completamento del processo subito dopo l’acquisizione di tutti i file POST. In caso contrario, il processo si interrompe se non vengono ricevute ulteriori richieste POST entro 30 minuti.
Risposta UploadPOST section-421df5cc04d44e23a464059aad86d64e
Per una richiesta POST corretta, il corpo della risposta è un documento XML uploadPostReturn, come specificato nel file XSD di seguito:
<element name="uploadPostReturn">
        <complexType>
            <sequence>
                <element name="jobHandle" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
            Il jobHandle restituito viene passato nel parametro uploadPostParams/ jobHandle per eventuali richieste POST successive per lo stesso processo. È inoltre possibile utilizzarlo per eseguire il polling dello stato del processo con l'operazione getActiveJobs o per eseguire una query sui registri del processo con l'operazione getJobLogDetails.
Se si verifica un errore durante l'elaborazione della richiesta POST, il corpo della risposta è costituito da uno dei tipi di errore API descritti in Errori.
Esempio di richiesta 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--
            Esempio di risposta POST - operazione riuscita 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>
            Esempio di risposta POST - errore 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>