Skip site navigation (1) Skip section navigation (2)

Guardar Imagen en campo Blob

From: "Joan Manuel Ventura Felix" <joanmvf(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Guardar Imagen en campo Blob
Date: 2007-03-30 23:46:32
Message-ID: 7406ea9c0703301646r3be26ff8q834205592a998d29@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Hola a todos, estoy utilizando delphi7 con postgresql 8.2, como puedo hacer
para que delphi me guarde una imagen en mi tabla de postgres, yo tengo el
siguiente codigo ke encontre en una pagina, pero no me funciona

esto lo tengo dentro del boton buscar foto, en la tabla tengo el campo foto
tipo blob, y un campo llamado ext, para guardar la extension. yo tengo otro
boton de guardar ke es donde hago el post, todo esta, bien solo es que no le
asigna la imagen al campo blob, pero si captura la extension de la imagen,
alquien que me ayude.

procedure Tin_actores.Button1Click(Sender: TObject);
var
  m, f: TStream;
  s: string;
begin
if OpenPictureDialog1.Execute then
   begin
    m:= ds.DataSet.CreateBlobStream(ds.DataSet.FieldByName('foto'),bmWrite);
    f:= TFileStream.Create(OpenPictureDialog1.filename, fmOpenRead);
//esta sentencia es la que no me funciona.
    m.CopyFrom(f, f.Size);
    s:= AnsiUpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
//Siempre en mayusculas
    if s='.JPEG' then s:= '.JPG'; //un caso especial

    ds.DataSet.FieldByName('ext').AsString:= Copy(s,2,3); //elimino el punto

   end;
end;

y este es el condigo del Data source en datachange para que mueste la imagen
en el Timage

procedure Tin_actores.dsDataChange(Sender: TObject; Field: TField);
var
  m: TStream;
begin
  if ds.DataSet.FieldByName('foto').IsNull then
    foto.Picture:= nil
  else
   begin
    if ds.DataSet.FieldByName('ext').AsString = 'BMP' then
      foto.Picture.Graphic:= TBitmap.Create
    else if ds.DataSet.FieldByName('ext').AsString = 'JPG' then
      foto.Picture.Graphic:= TJpegImage.Create
    {else if ds.DataSet.FieldByName('ext').AsString='GIF' then
      foto.Picture.Graphic:= TGIFImage.Create   }
    else
      Exit;

    m:= ds.DataSet.CreateBlobStream(ds.DataSet.FieldByName('foto'), bmRead);

    foto.Picture.Graphic.LoadFromStream(m);
  end;
end;

este es el codigo que tengo pero no me funciona

pgsql-es-ayuda by date

Next:From: Juan MartínezDate: 2007-03-31 08:46:45
Subject: Re: Sentencia SQL para dos registros por grupo
Previous:From: Daniel HernandezDate: 2007-03-30 22:52:03
Subject: RE: .NET y PostgreSQL

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group