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

Paulo Freire

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;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar