PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - Aplicativo de armazenamento de fotos de Funcionários
WX - Aplicativo de armazenamento de fotos de Funcionários
Iniciado por adrianoboller, jun., 12 2015 1:29 AM - 16 respostas
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:29 AM
Estrutura Table



Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:30 AM
Cadastro Realizado com Sucesso



Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:31 AM
//Le registro - ao clicar no browser embed code listbrowser: "Select Row"

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)

IMG_Foto = ImagemBuffer

ExecuteProcess(IMG_Foto,trtChange)
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:32 AM
//Botao Incluir

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

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

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
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:32 AM
//Botao Alterar

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

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

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
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:33 AM
//Botão Excluir

IF EDT_Matricula <> "" THEN

ok is boolean = HExecuteQuery(QRY_Delete_FotoTaxista,hQueryDefault,EDT_Matricula)

IF ok = True THEN

Info("Excluiu")

ELSE

Info(ErrorInfo())

END

TableDisplay(TABLE_NG0021_FotoTaxista,taReExecuteQuery)

TableDisplay(TABLE_NG0021_FotoTaxista,taInit)

ELSE
Info("Matricula em branco")
END
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:38 AM
Querys:

--//QRY_Delete_FotoTaxista
DELETE FROM
NG0021_FotoTaxista
WHERE
NG0021_FotoTaxista.Matricula = {pMatricula}



--//QRY_Insert_FotoTaxista
INSERT INTO NG0021_FotoTaxista
(
Matricula,
Nome,
Foto
)
VALUES
(
{pMatricula},
{pNome},
{pFoto}
)



--//QRY_Select_FotoTaxista
SELECT
NG0021_FotoTaxista.Matricula AS Matricula,
NG0021_FotoTaxista.Nome AS Nome,
NG0021_FotoTaxista.Foto AS Foto
FROM
NG0021_FotoTaxista



--//QRY_Select_FotoTaxista_Filtro
SELECT
NG0021_FotoTaxista.Matricula AS Matricula,
NG0021_FotoTaxista.Nome AS Nome,
NG0021_FotoTaxista.Foto AS Foto
FROM
NG0021_FotoTaxista
WHERE
NG0021_FotoTaxista.Matricula = {pMatricula}



--//QRY_Update_FotoTaxista
UPDATE
NG0021_FotoTaxista
SET
Nome = {pNome},
Foto = {pFoto}
WHERE
NG0021_FotoTaxista.Matricula = {pMatricula}



-- Script generated by WinDev on 11/06/2015 20:38:07
-- Tables of FotoTaxista.wda analysis
-- for SQL Server

-- Creating the NG0021_FotoTaxista table
CREATE TABLE [dbo.NG0021_FotoTaxista] (
[Matricula] INTEGER NOT NULL UNIQUE DEFAULT 0,
[Nome] NVARCHAR(50) DEFAULT NULL,
[Foto] TEXT DEFAULT NULL);


Obs.: Projeto é todo em ANSI
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:39 AM
Atenção: Para consumir em um webservice é o mesmo metodo que ocorre ao clicar no Browserlist.
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 12 2015 - 1:39 AM
:merci:
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 22 2015 - 9:21 PM
//pra enviar:

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

//para receber

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



//Na versão 20 teve uma melhoria nesse processo usando o seguinte função nova chamada "cryptstandard":

//pra enviar:
sMessage is Buffer = "Message à crypter"
bufCle is Buffer = HashString(HA_MD5_128, "mdp")
sRetorno is Buffer=CryptStandard(sMessage, bufCle, cryptAES128)


//para receber
Info(UncryptStandard(sRetorno, bufCle, cryptAES128))
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 22 2015 - 9:33 PM
OBS.: É obrigatório o base64, mas não pode ser comprimido nas duas pontas, se colocar pra ser comprimido nao funciona.
o ansi é pro windows, criptansi não pode no android.
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 23 2015 - 7:11 PM
//WINDEV MOBILE + Taget CODE

No ANDROID =
ImagemBuffer = Uncrypt(XML_Retorno,"",cryptNone)

No iOS =
ImagemBuffer = Uncrypt(XML_Retorno,"",cryptNone,encodeBASE64)

----


//WINDEV DESKTOP OU WEBDEV
//Para enviar a foto para o servidor no Busca Foto - Webservice - banco de dados - tabela com campo varchar(max)

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,"",cryptNone,encodeBASE64)

EDT_Foto = ImagemString

IMG_Foto = sPhoto

ExecuteProcess(IMG_Foto,trtChange)

END
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 23 2015 - 7:15 PM


Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em junho, 23 2015 - 7:16 PM
Obs.: No Android a base 64 é default sendo necessário fazer um Target Code para o iOS pois ele necessita desse parametro.
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em abril, 05 2016 - 10:09 PM
Prezados,

Segue alguns detalhes apontados pelo Danilo Valim

//********************************************************************
//Gerando imagem usando crypt
//********************************************************************
bufImageBuffer is Buffer = ""
sImageString is string = ""

bufImageBuffer = fLoadBuffer(IMG_1)

sImageString = Crypt(bufImageBuffer,"",cryptNone)
//sImageString = Crypt(bufImageBuffer,"TesteSenhaCript",cryptFast) //Com criptografado com senha

//info(length(sImageString)) - Qtde de Caracteres da Imagem Serializada - 3324508




//********************************************************************
//Usando Código dessa Forma Consigo Inserir uma Imagem de Tamanho - 2,31 Mb
//********************************************************************
gdsConsulta is Data Source
HClose(gdsConsulta)

gsQuery is string = "Execute Cadastro_Anexo "+EDT_Nome_Imagem+" ,'"+sImageString+"',0"
IF NOT HExecuteSQLQuery(gdsConsulta,CONN2, hQueryWithoutCorrection, gsQuery) THEN
Info(HErrorInfo())
ELSE
HReadFirst(gdsConsulta, MsgProd)
WHILE HOut() = False
IF gdsConsulta.MsgProd <> "OK" THEN
Error(gdsConsulta.MsgProd)
ELSE
Info("OK")
END
HReadNext(gdsConsulta)
END
END



//*********************************************************************************
//Usando esse Código, dessa Forma da Estouro de Buffer, Variavel sImageString
//vai Cortada e da Erro, não funciona, não use HEXECUTEQUERY, USE
//HEXECUTESQLQUERY, É MAIS ADEQUADO.
//***********************************************************************************
IF HExecuteQuery(QRY_Insert_Foto,hQueryDefault,EDT_Nome_Imagem,sImageString) = False THEN
Info(HErrorInfo())
ELSE
Info("Imagem salva com Sucesso!!")
END



//*********************************************************************************
//Dessa Forma também da Estouro de Buffer, Variavel sImageString vai
//Cortada e da Erro, não funciona
//***********************************************************************************
dsQry_Sql is Data Source

sQl_execute is string =
[
Insert INTO Anexo_Teste
(
NomeAnexo,
Foto
)
VALUES
(
'@NomeAnexo@',
'@Foto@'
)
]

sQl_execute = Replace(sQl_execute,"@NomeAnexo@",EDT_Nome_Imagem)
sQl_execute = Replace(sQl_execute,"@Foto@",sImageString)

ok is boolean = HExecuteSQLQuery(dsQry_Sql,hQueryDefault+hCheckDuplicates+hCheckIntegrity,sQl_execute)
IF ok = True THEN
Info("OK")
ELSE
Info(HErrorInfo(),ErrorInfo())
END




//***********************************
Conteudo da variavel sImageString
//***********************************

/9j/4QJMRXhpZgAASUkqAAgAAAAMAAABBAABAAAAIBAAAAEBBAABAAAAGAwAAA8BAgAIAAAAngAAABAB
AgAJAAAApgAAABIBAwABAAAABgAAABoBBQABAAAAsAAAABsBBQABAAAAuAAAACgBAwABAAAAAgAAADEB
AgANAAAAwAAAADIBAgAUAAAAzgAAABMCAwABAAAAAQAAAGmHBAABAAAA4gAAAAAAAABTQU1TVU5HAEdU
LUk5NTA1AABIAAAAAQAAAEgAAAABAAAASTk1MDVWSlVFTUtFAAAyMDE0OjA0OjAzIDIzOjI0OjA4AA8A
IogDAAEAAAACAAAAAJAHAAQAAAAwMjIwA5ACABQAAACcAQAABJACABQAAACwAQAAAZEHAAQAAAABAgMA
B5IDAAEAAAACAAAAfJIHAGIAAADEAQAAAKAHAAQAAAAwMTAwAaADAAEAAAABAAAAAqAEAAEAAAAgEAAA
A6AEAAEAAAAYDAAABaAEAAEAAAAmAgAAAqQDAAEAAAAAAAAAA6QDAAEAAAAAAAAABqQDAAEAAAADAAAA
AAAAADIwMTQ6MDQ6MDMgMjM6MjQ6MDgAMjAxNDowNDowMyAyMzoyNDowOAAHAAEABwAEAAAAMDEwMAIA
BAABAAAAACABAAwABAABAAAAAAAAABAABQABAAAAWgAAAEAABAABAAAAAAAAAFAABAABAAAAAQAAAAAB
AwABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAQACAAQAAABSOTgAAgAHAAQAAAAwMTAwAAAAAP/bAIQAAQEB
AQEBAQEBAQEBAQICAwICAgICBAMDAgMFBAUFBQQEBAUGBwYFBQcGBAQGCQYHCAgICAgFBgkKCQgKBwgI
CAEBAQECAgIEAgIECAUEBQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgI/8AAEQgMGBAgAwEiAAIRAQMRAf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol
JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6AQAD ........


//Obs: Nao da certo de terminar de montar o INSERT, Corta no meio o Insert.


:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.blogspot.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em julho, 08 2016 - 4:36 PM
Em resumo:

ENVIO = arquivo vira buffer, buffer vira string com crypt e envia a string

RETORNO = recebe a string, descripta ela com uncrypt que vira buffer, que salva o arquivo em disco





Para os fãs do seriado "Jornada nas Estrelas" o termo não é estranho. Teletransportar significa desintegrar uma pessoa ou objeto em um determinado lugar fazendo-o reaparecer em outro.

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, julho, 08 2016 - 4:37 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em julho, 08 2016 - 4:56 PM
//Exemplo Envio

bufMyFile is buffer=fLoadBuffer("c:\arquivos\dados.zip") //buferizou o arquivo

textoEnvio is string = Crypt(bufMyfile,"",cryptNone, encodeBASE64) //serializou numa string o buffer

//parametro de envio de um webservice
fontedado.contentfile = textoEnvio

---

//Exemplo Recebimento
Xmlrecebido is string = fontedado.contentfile
bufRecebido is buffer = Uncrypt(Xmlrecebido,"",cryptnome,encodeBASE64) //converteu o serializado em buffer

fSaveBuffer("c:\arquivos\dados.zip",bufRecebido) //converteu o buffer em arquivo


:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, julho, 08 2016 - 5:02 PM