PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

Exemplo Upload Imagem to Database Buffer and Encode64
Publié par Boller
dans la catégorie Outils
Nouveautés



Description
Exemplo Upload Imagem to Database Buffer and Encode64

DOC/HELP
https://forum.PC SOFT.fr/en-US/PC SOFT.br.WINDEV/1268-trabalhando-com-byte-array-3546/read.awp

Nossos clientes as vezes mandam protocolos impressos e gostaria de digitalizar e gravar no HFSQL.

Qual seria o melhor método?

Gravar a imagem dentro do banco ou criar um link das imagem em uma pasta?

Alguém tem exemplo disso ?

Tudo depende do teu gosto as duas funcionam (base binária ou link ftp httprequest)

O campo binário do Hfsql é muito bom


Como eu faço:

- Crio uma tabela t001_pessoas E nela crio os campos Mas não coloco o binário nessa tabela da foto Crio outra tabela t002_pessoas_fotos

Relaciono e coloco o campo binário Isso não vai deixar lento vai funcionar ok e o tamanho do buffer da imagem vai para essa tabela

Funciona muito bem não diminui velocidade de consulta

Só vai transitar na rede a foto somente quando pedir ela

Se der um select *
não terei o buffer da foto transitando na rede sem motivo

Eu acho que é o mais lógico

Se for com link terá que fazer um http request além de um select

Será mais complexo, mas vai funcionar

Serão 4 operações e com a tabela binária, reservar o link numa variável e consultar com httprequest e depois um httpgettesult.

E um select com inner join 2 operação tem o resultado em um buffer ou em um array de string encode64 que terá que converter para buffer

Guardar no banco terá um consumo a mais de espaço, mas é bem simples e garantido :-)

Se for link se for ip e trocou para DNS ou para outro ip ou DNS daí o link ficou inútil, não vai baixar :-(



//Busca Foto

EDT_Foto = ""

EDT_PathArquivo = ""

sPhoto is string = ""

ImagemBuffer is Buffer = ""

bufKey is Buffer = ""

ImagemString is string = ""

sPhoto = fImageSelect(fExeDir,“”,"")

IF sPhoto ~= “” THEN

RETURN

ELSE

ImagemBuffer = fLoadBuffer(sPhoto)

//ImagemString = Crypt(ImagemBuffer,"",cryptAnsi+compressLZW,encodeBASE64)

//ImagemString = Crypt(ImagemBuffer,"",cryptFast,True)

//ImagemString = Crypt(ImagemBuffer,"",cryptNone)

ImagemString = Crypt(ImagemBuffer,"",cryptNone,encodeBASE64)

EDT_Foto = ImagemString

IMG_Foto = sPhoto

ExecuteProcess(IMG_Foto,trtChange)

END




-------



//Incluir

IF EDT_Matricula <> "" AND EDT_Nome <> "" AND EDT_Foto <> "" THEN

FotoEncode64 is string = Encode(EDT_Foto,encodeBASE64)

ok is boolean = HExecuteQuery(QRY_Insert_FotoTaxista,hQueryDefault,EDT_Matricula,EDT_Nome,EDT_Foto,FotoEncode64)

IF ok = True THEN

Info("Gravou")

ELSE

Info(ErrorInfo())

END

TableDisplay(TABLE_NG0021_FotoTaxista,taReExecuteQuery)
TableDisplay(TABLE_NG0021_FotoTaxista,taInit)

ELSE
Info("Campos obrigatorios em branco")
END



-----


//Le registro

ImagemBuffer is Buffer = ""

EDT_Matricula = TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Matricula

EDT_Nome = TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Nome

EDT_Foto = TABLE_NG0021_FotoTaxista[TABLE_NG0021_FotoTaxista].COL_Foto

//ImagemBuffer = Uncrypt(EDT_Foto,"", compressLZW+cryptAnsi,encodeBASE64)

//ImagemBuffer = Uncrypt(EDT_Foto,"", cryptFast,True)

//ImagemBuffer = Uncrypt(EDT_Foto,"", cryptNone)

//ImagemBuffer = Uncrypt(EDT_Foto,"1234", cryptFast)
ImagemBuffer = Uncrypt(EDT_Foto,"",cryptNone,encodeBASE64)

IMG_Foto = ImagemBuffer

ExecuteProcess(IMG_Foto,trtChange)


Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
Aucun avis ou commentaire ? Soyez le premier !
A PROPOS
EVALUATION :
00Aucune évaluation
TELECHARGEMENTS :
79
PUBLIÉE :
28 avril 2020
VERSION :
25
CONCERNE :
WINDEV
Version minimale : 25
TAILLE :
6 Mo