FAQs - Suporte técnico

Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Extração de arquivo do repositório imagens via REST


Dúvida
É possível criar um web service no Protheus consumindo o cadastro de produto e trazendo a imagem do Produto?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – Todas as versões

Solução

Sim neste caso pode utiliza as funções de acesso ao Repositório de Imagem

  1. LoadBitmap - Nome da imagem do repositório
  2. RepExtract - Extração de arquivo do repositório imagens

Segue exemplo de customizado

// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
#Include "RESTFUL.ch"
#Include "TBICONN.ch"

// SERVIÇO REST
WSRESTFUL wsmatarp DESCRIPTION "REST web service for product"
WSDATA product AS STRING // CÓDIGO DO PRODUTO

// MÉTODO PARA OBTER A IMAGEM
WSMETHOD GET mt010images DESCRIPTION "Method to get a product image" WSSYNTAX "/wsmatarp/mt010images/{id}" PATH "mt010images"
END WSRESTFUL

// MÉTODO PARA OBTER A IMAGEM
WSMETHOD GET mt010images WSRECEIVE product WSSERVICE wsmatarp
Local oFile := NIL // CONVERSÃO DE .BMP PARA BINÁRIO

// PREPARAÇÃO DE AMBIENTE (REMOVER SE EXECUTADO VIA GUI)
RPCSetEnv("99", "01", NIL, NIL, "COM", NIL, {"SB1", "SB5"})

// ABRE O ARQUIVO DA TABELA SB1 E PESQUISA PELO ÍNDICE 01
DbSelectArea("SB1")
DbSetOrder(1)

// VERIFICA SE O PRODUTO INFORMADO TEM IMAGEM CADASTRADA
If (MsSeek(FwXFilial("SB1") + PadR(AllTrim(::product), TamSX3("B1_COD")[1])))
// CASO O PRODUTO TENHA IMAGEM, EFETUA E EXTRAÇÃO PARA O ROOTHPATH
If (RepExtract(AllTrim(SB1->B1_BITMAP), "\images\" + AllTrim(::product) + ".bmp" , .T.))
oFile := FwFileReader():New("/images/" + AllTrim(::product) + ".bmp")

// EFETUA A MANIPULAÇÃO DO ARQUIVO
If (oFile:Open())
// RETORNA O ARQUIVO PARA DOWNLOAD
Self:SetHeader("Content-Disposition", "attachment; filename=" + AllTrim(::product) + ".bmp")
Self:SetResponse(oFile:FullRead())

// APAGA O ARQUIVO GERADO
FErase("/images/" + AllTrim(::product) + ".bmp")
Else
SetRestFault(002, "can't load file") // GERA MENSAGEM DE ERRO CUSTOMIZADA
EndIf
Else
SetRestFault(002, "can't load image")
EndIf
Else // SE NÃO ACHA A IMAGEM
SetRestFault(404, "product image not found")
EndIf
Return (.T.)
Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

1 Comentários

  • Avatar
    Welinton Fernandes de Oliveira

    Boa tarde,

    E para fazer o contrario?
    Eu estou pegando uma foto de uma api externa e preciso gravar essa foto no banco do protheus.

    Fiz um Rest POST no protheus que ja esta gravando todos os campos menos esse campo que é de foto.

    Obrigado.

     

    0
    Ações de comentário Permalink
Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _