Upload de ativos por meio de POSTs HTTP no UploadFile Servlet

O upload de ativos no Dynamic Media Classic envolve uma ou mais solicitações HTTP POST que configuram um trabalho para coordenar toda a atividade de log associada aos arquivos carregados.

Use o seguinte URL para acessar o UploadFile Servlet:

https://<server>/scene7/UploadFile
OBSERVAÇÃO

Todas as solicitações de POST para um trabalho de upload devem se originar do mesmo endereço IP.

URLs de acesso para regiões do Dynamic Media

Localização geográfica

URL de produção

URL de armazenamento temporário (uso para desenvolvimento e teste pré-produção)

América do Norte

https://s7sps1ssl.scene7.com/scene7/UploadFile

https://s7sps1ssl-staging.scene7.com/scene7/UploadFile

Europa, Médio Oriente, Ásia

https://s7sps3ssl.scene7.com/scene7/UploadFile

https://s7sps3ssl-staging.scene7.com/scene7/UploadFile

Japão/Pacífico Asiático

https://s7sps5ssl.scene7.com/scene7/UploadFile

https://s7sps5ssl-staging.scene7.com/scene7/UploadFile

Fluxo de trabalho do trabalho de upload

O trabalho de upload consiste em um ou mais POSTs HTTP que usam um jobHandle para correlacionar o processamento no mesmo trabalho. Cada solicitação é multipart/form-data codificado e consiste nas seguintes partes do formulário:

OBSERVAÇÃO

Todas as solicitações de POST para um trabalho de upload devem se originar do mesmo endereço IP.

Parte do formulário POST do HTTP Descrição
auth Obrigatório. Um documento authHeader XML especificando informações de autenticação e cliente. Consulte Autenticação da solicitação under SOAP.
file params Opcional. Você pode incluir um ou mais arquivos para fazer upload com cada solicitação de POST. Cada parte do arquivo pode incluir um parâmetro de nome de arquivo no cabeçalho Content-Disposition usado como nome de arquivo de destino no IPS se não houver uploadPostParams/fileName é especificado.
Parte do formulário POST do HTTP nome do elemento uploadPostParams Tipo Descrição
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) companyHandle xsd:string Obrigatório. Lide com a empresa para a qual o arquivo está sendo carregado.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) jobName xsd:string Ou jobName ou jobHandle é obrigatório. Nome do trabalho de upload.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) jobHandle xsd:string Ou jobName ou jobHandle é obrigatório. Gerenciar um trabalho de upload iniciado em uma solicitação anterior.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) locale xsd:string Opcional. Idioma e código do país para localização.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) description xsd:string Opcional. Descrição da tarefa.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) destFolder xsd:string Opcional. Caminho da pasta de destino para o prefixo de uma propriedade de nome de arquivo, especialmente para navegadores e outros clientes que podem não suportar caminhos completos em um nome de arquivo.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) fileName xsd:string Opcional. Nome do arquivo de destino. Substitui a propriedade filename .
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) endJob xsd:boolean Opcional. O padrão é false.
uploadParams (Obrigatório. Um XML uploadParams documento especificando os parâmetros de upload) uploadParams types:UploadPostJob Opcional se for uma solicitação subsequente para um trabalho ativo existente. Se houver um trabalho existente, uploadParams é ignorada e os parâmetros de upload de trabalho existentes são usados. Consulte UploadPostJob

No <uploadPostParams> o bloco é o <uploadParams> bloco que designa o processamento dos arquivos incluídos.

Consulte UploadPostJob.

Embora você possa supor que a variável uploadParams pode ser alterado para arquivos individuais como parte do mesmo trabalho, não é o caso. Usar o mesmo uploadParams parâmetros da tarefa inteira.

A solicitação de POST inicial para um novo trabalho de upload deve especificar a variável jobName preferencialmente usando um nome de trabalho exclusivo para simplificar pesquisas de status de trabalho subsequentes e consultas de log de trabalho. As solicitações de POST adicionais para o mesmo trabalho de upload devem especificar a variável jobHandle em vez de jobName, usando o jobHandle valor retornado da solicitação inicial.

A solicitação de POST final para um trabalho de upload deve definir a variável endJob para true, de modo que nenhum arquivo futuro seja POSTed para esse trabalho. Por sua vez, isso permite que o trabalho seja concluído imediatamente após todos os arquivos POSTed serem assimilados. Caso contrário, a tarefa expirará se nenhuma solicitação POST adicional for recebida em 30 minutos.

Resposta de UploadPOST

Para uma solicitação de POST bem-sucedida, o corpo da resposta é um XML uploadPostReturn documento, conforme o XSD especifica no seguinte:

<element name="uploadPostReturn">
        <complexType>
            <sequence>
                <element name="jobHandle" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>

O jobHandle retornado é passado no uploadPostParams/ jobHandle para qualquer solicitação de POST subsequente para o mesmo trabalho. Você também pode usá-lo para pesquisar o status da tarefa com a variável getActiveJobs ou para consultar os logs de tarefas com a getJobLogDetails operação.

Se houver um erro ao processar a solicitação POST, o corpo da resposta será um dos tipos de falha da API, conforme descrito em Falhas.

Exemplo de solicitação de 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--

Exemplo de resposta de POST - sucesso

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>

Exemplo de resposta de POST - erro

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>

Nesta página