Fórum Salvar Foto de uma TImagem no MongoDB e Busca-la no banco para o TImage, sem componente #591806
16/03/2018
0
Olá, pessoal, eu estou precisando salvar e normatizar uma rotina para salvar foto no MongoDB(foto pequenas até 500kb), eu usava um componente do Thulio Bittercourt, acho que DBImageMongo, mas preciso normatizar isso aqui, ou seja, deixar para os pósteros que irão dar suporte ao sistema e tem que ser via código, nada de componente, tentei isso não não rolou, AGRADEÇO.
var
fileStm : TStream;
memStm : TMemoryStream;
begin
fileStm := TFileStream.Create(imgFotoCapturada.Picture.Graphic, fmOpenReadWrite);
memStm := TMemoryStream.Create;
memStm.LoadFromStream(fileStm);
try
with DM do
begin
FConMongo['DBACESSO']['USUARIOS'].Insert()
.Values()
.Add('ID', edtUsuarioID.Text)
.Add('NOME', edtNome.Text)
.Add('CPF', edtCPF.Text)
.Add('IDXDEDO', StrToInt(edtIdxDedo.Text))
.Add('TIPO', rgTipo.ItemIndex)
.Add('IDXTEMPLATEDIGITAL', MemoTemplate.Lines.Text)
.Add('VALIDADE', dtValidade.Date)
.Add('DIAHORARIO', cboDiaHorarioDeAcesso.KeyField)
.Add('FOTO', EncodeBase64(memStm.Memory, memStm.Size))
.Add('PATENTE', cboPatente.KeyField)
.Add('NIVELACESSO', cboNivel.KeyField)
.&End
.Exec;
end;
finally
fileStm.Free;
memStm.Free;
Application.MessageBox('Usuário Registrado com sucesso !!!','Salvo', MB_ICONINFORMATION + mb_OK);
end;
Paulo Freire
Curtir tópico
+ 0
Responder
Posts
20/03/2018
Paulo Freire
Consegui, vou deixar a solução aqui, se alguém precisar já esta resolvido.
var
oDoc: TMongoDocument;
oCrs: TMongoCursor;
begin
try
oDoc := DM.FEnv.NewDoc;
oDoc
.Add('_id', edtUsuarioID.Text)
.Add('NOME', edtNome.Text)
.Add('CPF', edtCPF.Text)
.Add('IDXDEDO', StrToInt(edtIdxDedo.Text))
.Add('TIPO', rgTipo.ItemIndex)
.Add('IDXTEMPLATE', MemoTemplate.Lines.Text)
.Add('VALIDADE', dtValidade.Date)
.Add('DIAHORARIO', 0)
.Add('PATENTE', cboPatente.KeyField)
.Add('NIVELACESSO', cboNivel.KeyField)
.Add('FOTO', FotoToBase64(imgFotoCapturada));
DM.FConMongo['DBACESSO']['USUARIOS'].Insert(oDoc)
finally
Application.MessageBox('Usuário Registrado com sucesso !!!','Salvo', MB_ICONINFORMATION + mb_OK);
LimpaCampos;
end;
function TfrmPrincipal.FotoToBase64(imagem: TImage): AnsiString;
var
f : TmemoryStream;
begin
f := TmemoryStream.Create;
try
imagem.Picture.Graphic.SavetoStream(f);
f.Position := 0;
result := IdEncoderMIME1.Encode(f);
finally
f.Free;
end;
end;
var
oDoc: TMongoDocument;
oCrs: TMongoCursor;
begin
try
oDoc := DM.FEnv.NewDoc;
oDoc
.Add('_id', edtUsuarioID.Text)
.Add('NOME', edtNome.Text)
.Add('CPF', edtCPF.Text)
.Add('IDXDEDO', StrToInt(edtIdxDedo.Text))
.Add('TIPO', rgTipo.ItemIndex)
.Add('IDXTEMPLATE', MemoTemplate.Lines.Text)
.Add('VALIDADE', dtValidade.Date)
.Add('DIAHORARIO', 0)
.Add('PATENTE', cboPatente.KeyField)
.Add('NIVELACESSO', cboNivel.KeyField)
.Add('FOTO', FotoToBase64(imgFotoCapturada));
DM.FConMongo['DBACESSO']['USUARIOS'].Insert(oDoc)
finally
Application.MessageBox('Usuário Registrado com sucesso !!!','Salvo', MB_ICONINFORMATION + mb_OK);
LimpaCampos;
end;
function TfrmPrincipal.FotoToBase64(imagem: TImage): AnsiString;
var
f : TmemoryStream;
begin
f := TmemoryStream.Create;
try
imagem.Picture.Graphic.SavetoStream(f);
f.Position := 0;
result := IdEncoderMIME1.Encode(f);
finally
f.Free;
end;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)