Carga de recursos mediante POST HTTP en el servlet UploadFile uploading-assets-by-way-of-http-posts-to-the-uploadfile-servlet
La carga de recursos en Dynamic Media Classic implica una o más solicitudes de POST HTTP que configuran un trabajo para coordinar toda la actividad de registro asociada con los archivos cargados.
Utilice la siguiente URL para acceder al servlet UploadFile:
https://<server>/scene7/UploadFile
URL de acceso para regiones de Dynamic Media
Flujo de trabajo del trabajo de carga section-873625b9512f477c992f5cdd77267094
El trabajo de carga consiste en uno o más POST HTTP que utilizan un jobHandle
común para correlacionar el procesamiento en el mismo trabajo. Cada solicitud está codificada multipart/form-data
y consta de las siguientes partes de formulario:
auth
file params
uploadPostParams/fileName
.uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)companyHandle
xsd:string
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)jobName
xsd:string
jobName
o jobHandle
. Nombre del trabajo de carga.uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)jobHandle
xsd:string
jobName
o jobHandle
. Administrar a un trabajo de carga iniciado en una solicitud anterior.uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)locale
xsd:string
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)description
xsd:string
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)destFolder
xsd:string
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)fileName
xsd:string
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)endJob
xsd:boolean
uploadParams
(obligatorio). Un documento XML uploadParams
que especifica los parámetros de carga)uploadParams
types:UploadPostJob
uploadParams
se omite y se usan los parámetros de carga del trabajo existentes. Ver UploadPostJobDentro del bloque <uploadPostParams>
está el bloque <uploadParams>
que designa el procesamiento de los archivos incluidos.
Consulte UploadPostJob.
Aunque puede suponer que el parámetro uploadParams
puede cambiar para archivos individuales como parte del mismo trabajo, no es el caso. Usar los mismos uploadParams
parámetros para todo el trabajo.
La solicitud inicial del POST para un nuevo trabajo de carga debe especificar el parámetro jobName
, preferiblemente con un nombre de trabajo único para simplificar las consultas subsiguientes de sondeo de estado de trabajo y registro de trabajo. Las solicitudes de POST adicionales para el mismo trabajo de carga deben especificar el parámetro jobHandle
en lugar de jobName
, utilizando el valor jobHandle
devuelto desde la solicitud inicial.
La solicitud final del POST para un trabajo de carga debe establecer el parámetro endJob
en true para que no se publiquen archivos futuros para este trabajo. A su vez, esto permite que el trabajo se complete inmediatamente después de ingerir todos los archivos POSTed. De lo contrario, se agota el tiempo de espera del trabajo si no se reciben solicitudes de POST adicionales en un plazo de 30 minutos.
Respuesta de UploadPOST section-421df5cc04d44e23a464059aad86d64e
Para una solicitud de POST correcta, el cuerpo de respuesta es un documento XML uploadPostReturn
, como especifica el XSD en lo siguiente:
<element name="uploadPostReturn">
<complexType>
<sequence>
<element name="jobHandle" type="xsd:string"/>
</sequence>
</complexType>
</element>
El jobHandle
devuelto se pasa en el parámetro uploadPostParams
/ jobHandle
para cualquier solicitud de POST posterior para el mismo trabajo. También puede utilizarlo para sondear el estado del trabajo con la operación getActiveJobs
o para consultar los registros del trabajo con la operación getJobLogDetails
.
Si hay un error al procesar la solicitud del POST, el cuerpo de respuesta consta de uno de los tipos de errores de API como se describe en Errores.
Ejemplo de solicitud de 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--
Ejemplo de respuesta del POST: correcta 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>
Ejemplo de respuesta del POST: error 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>