Salvar Foto de uma TImagem no MongoDB e Busca-la no banco para o TImage, sem componente
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
Clique aqui para fazer login e interagir na Comunidade :)