Salvar Foto de uma TImagem no MongoDB e Busca-la no banco para o TImage, sem componente

MongoDB

Delphi

16/03/2018

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

Paulo Freire

Curtidas 0

Respostas

Paulo Freire

Paulo Freire

16/03/2018

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;
GOSTEI 0
POSTAR