Ir para conteúdo
  • Cadastre-se

dev botao

Inserir campo do tipo blob em arquivo XML


Ver Solução Respondido por EMBarbosa,
  • Este tópico foi criado há 1805 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom dia.

Meu problema é o seguinte: Possuo uma tabela com um campo do tipo blob no qual armazeno uma imagem e preciso gravar os registros dessa tabela em um arquivo xml para ser lido por um webservice. Não estou conseguindo informar esse registro blob no xml, não insere todos os binários somente os primeiros digitos do blob. Alguém já passou por uma situação parecida que possa me dar uma dica?

Estou usando delphi 7 + zeos dbo + TXMLdocument para gerar o arquivo xml.

Editado por Werner_Marques
Link para o comentário
Compartilhar em outros sites

  • Consultores
1 hora atrás, Werner_Marques disse:

não insere todos os binários somente os primeiros digitos do blob. Alguém já passou por uma situação parecida que possa me dar uma dica? 

Estou usando delphi 7 + zeos dbo + TXMLdocument para gerar o arquivo xml.

Como você está convertendo o tipo binário? Está usando base64 por exemplo?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro
2 horas atrás, EMBarbosa disse:

Como você está convertendo o tipo binário? Está usando base64 por exemplo?

Boa tarde,

não, estou fazendo assim: NodeNivelC.AddChild('logo').NodeValue     := TBlobField(qr.fieldbyname('logo').AsString

dessa forma ele deveria inserir em formato de texto, mas está acontecendo que ele insere somente os 3 primeiros caracteres.

Editado por Werner_Marques
Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution
10 minutos atrás, Werner_Marques disse:

Boa tarde,

não, estou fazendo assim: NodeNivelC.AddChild('logo').NodeValue     := TBlobField(qr.fieldbyname('logo').AsString

dessa forma ele deveria inserir em formato de texto, mas está acontecendo que ele insere somente os 3 primeiros caracteres.

Acho que você não pode simplesmente atribuir ao NodeValue (que é um OleVariant) uma string que é na verdade um arquivo binário.

É provável que vão existir caracteres de controle não compatíveis e resultará em um xml malformado.

Talvez por isso seja necessário converter para base64. Visto que está usando Delphi 7 espero que esse link te ajude: https://stackoverflow.com/q/32306960/460775

 

  • Curtir 3

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

A propósito, o XML não foi feito para isso (incluir arquivos binários). Ele não é eficiente para isso. Você vai gastar mais tempo e recursos.

Seria melhor verificar com o servidor uma alternativa.

  • Curtir 2

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa Tarde, @EMBarbosa.

Consegui da forma que orientou codificando para base64. Concordo que não é o mais indicado usar o arquivo XML, vou conversar com o responsável pelo servidor para ver se é possível fazer de outra forma. Obrigado pela atenção e pelo auxilio, pode fechar o tópico.

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1805 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...