Dica Salvando Imagens E Arquivos No Banco

Bom dia pessoALL!!

Depois de ver alguns assuntos a respeito de gravar imagem através da API, resolvi pesquisar e agora vou compartilhar o que encontrei. #dica

A inclusão/atualização da imagem no banco de dados deve ser feita basicamente em três passos.

  1. Auteticação no serviço

  2. Upload da Imagem

  3. Atualização do campo de imagem da tabela desejada.

Para este exemplo, descreverei como atualizar a imagem no cadastro de produto.

1. Autenticação
A autenticação deverá ser realizada através de uma requisição POST ao serviço “MobileLoginSP.login”

URL: http[s]://seu_servidor_sankhya:<sua_porta>/mge/service.sbr?serviceName=MobileLoginSP.login&outputType=json

Corpo da Requisição da Autenticação

    {
    "serviceName": "MobileLoginSP.login",
    "requestBody": {
        "NOMUSU": {
            "$": "[USUARIO]"
        },
        "INTERNO":{
            "$":"[SENHA]"
        },
        "KEEPCONNECTED": {
            "$": "N"
        }
    }
}

Obs: Para maiores informações sobre a autenticação, dê uma olhada na documentação

Retorno da Autenticação

{
  "serviceName": "MobileLoginSP.login",
  "status": "1",
  "pendingPrinting": "false",
  "transactionId": "D59D725D5E9BCCFE65558E5F759D70A3",
  "responseBody": {
    "callID": {
      "$": "42AC99CE081AD7A7E39141C3D3BD2ACE"
    },
    "jsessionid": {
      "$": "o4RXRcvWTcok-gp6fPhT1Vyvou7MdDw0Yer9l1Nu"
    },
    "idusu": {
      "$": "MA==\n"
    }
  }
}

2. Upload da Imagem
O upload da imagem será realizado através de um post na url abaixo:

URL: http[s]://seu_servidor_sankhya:<sua_porta>/mge/sessionUpload.mge?sessionkey=Produto_IMAGEM&fitem=S&salvar=S&useCache=N

ATENÇÃO: O valor parâmetro sessionkey deverá ser lembrado para a próxima chamada

O post deverá ser realizado a estrutura de “Multipart Form” (multpart/form-data) e um dos itens do formulário deverá se chamar o arquivo, contendo os dados do arquivo a ser enviado.

Pense no “arquivo” como sendo um elemento html como um input do tipo arquivo:

<input type="file" name="arquivo" />

3. Atualização do campo de imagem no banco de dados
A atualização do campo de imagem no banco de dados será realizada através do serviço “CRUDServiceProvider.saveRecord”

URL: http[s]://seu_servidor_sankhya:<sua_porta>/mge/service.sbr?serviceName=CRUDServiceProvider.saveRecord&mgeSession=jsessionid_retornado_na_autenticacao&outputType=json

A requisição ao serviço será do tipo POST e segue abaixo sua estrutura.
Observação: Na requisição abaixo, estou atualizando somente a imagem, porém, mais de um campo pode ser atualizado na requisição.

{ 
   "requestBody":{
      "dataSet":{
         "rootEntity":"Produto",
         "includePresentationFields":"N",
         "dataRow":{
                      "key" : {
                            "CODPROD": {
                      "$": 1
                  }
                        },
            "localFields": {
                                "IMAGEM" : { "$" : "$file.session.key{Produto_IMAGEM}"}
              }
         }, "entity":{
            "fieldset":{
               "list":""
            }
         }
      }
   }
}

Lembrando que o elemento “key” da requisição deverá possuir os campos participantes da chave da tabela utilizada.

No caso da TGFPRO, estamos falando da CODPROD.

Grande abraço a todos!

Esta dica foi útil?

  • Sim

  • Não

0votantes

2
23 respostas
Vale a leitura