Ver Mensaje Individual
  #1  
Antiguo 24-06-2012
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Reputación: 22
JXJ Va por buen camino
php meter/sacar/update imagen binario de base de datos mysql/firebird

hola..

tengo una duda

para sacar de la base de datos archivos binarios. imagenes documentos etc....

en delphi uso la unit de aqui
pero en php como se hace si la base de datos es mysql / firebird????
Código Delphi [-]
unit EmpresaClass;

interface

uses
  Forms, Windows, ActiveX, shlobj, ShellAPI, SysUtils, Registry, IniFiles, Dialogs, classes,  DB, MemDS, DBAccess, IBC, Graphics, jpeg, pngimage, ExtCtrls;

type
  TEmpresaClass = class(TObject)
  private
///=================================
    Transaction1: TIBCTransaction;
    Transaction2: TIBCTransaction;
    Transaction3: TIBCTransaction;
    Transaction4: TIBCTransaction;
    Transaction5: TIBCTransaction;
    Transaction6: TIBCTransaction;
    Transaction7: TIBCTransaction;
    Transaction8: TIBCTransaction;
    Transaction9: TIBCTransaction;
    Transaction10: TIBCTransaction;
    Transaction11: TIBCTransaction;
///=================================
  public
    Conectado : Boolean;
    Conexion: TIBCConnection;
///=================================
    Query1: TIBCQuery;
    Query2: TIBCQuery;
    Query3: TIBCQuery;
    Query4: TIBCQuery;
    Query5: TIBCQuery;
    Query6: TIBCQuery;
    Query7: TIBCQuery;
    Query8: TIBCQuery;
    Query9: TIBCQuery;
    Query10: TIBCQuery;
    Query11: TIBCQuery;
///=================================
  ID         : integer;
  RFC        : string;
  NOMBRE     : string;
  CALLE      : string;
  NUMEXT     : string;
  NUMINT     : string;
  COLONIA    : string;
  CP         : string;
  ESTADO     : string;
  MUNICIPIO  : string;
  PAIS       : string;
  LEYENDA1   : string;
  LEYENDA2   : string;
  LOGO                  : TField;

  imgLogo: TImage;

    procedure Datos;

    procedure Registra(logo:string);
    procedure Actualiza(logo:string);
    constructor Create(Servidor:string; Puerto :string; BDPath:string; BDNombre :string; Usuario :string; Pass:string; Codificacion : string); overload;
    destructor Destroy; override;
  end;

//var
//  EnterpriseB: TEnterpriseClass;

implementation

//uses
//  Unit1;


constructor TEmpresaClass.Create(Servidor:string; Puerto :string; BDPath:string; BDNombre :string; Usuario :string; Pass:string; Codificacion : string);
begin

  {$REGION 'CREACION'}
  inherited Create;

    Conectado := False;

  Conexion := TIBCConnection.Create(nil);
  Conexion.Params.Clear;
  Conexion.LoginPrompt := False;
  Conexion.Connected := False;
  Conexion.Database :=  Servidor + '/' + Puerto + ':' + IncludeTrailingPathDelimiter(BDPath) + BDNombre;
  Conexion.Params.Values['user_name'] := Usuario;
  Conexion.Params.Values['password'] := Pass;
  Conexion.Params.Values['lc_ctype'] := Codificacion;

  Conexion.SQLDialect := 3;

  Conexion.ClientLibrary := 'fbclient.dll';
  // muy importante para usar unicode poner esto a true
  Conexion.Options.UseUnicode := true;
Conexion.Connect;
 if Conexion.Connected  then
 begin
   Conectado := True;
 end
 else
 begin
   Conectado := False;
 end;


  Transaction1 := TIBCTransaction.Create(nil);
  Transaction1.DefaultConnection := Conexion;
  Transaction1.Params.Clear;
  Transaction1.Params.Add('read_committed');
  Transaction1.Params.Add('rec_version');
  Transaction1.Params.Add('nowait');

  Transaction2 := TIBCTransaction.Create(nil);
  Transaction2.DefaultConnection := Conexion;
  Transaction2.Params.Clear;
  Transaction2.Params.Add('read_committed');
  Transaction2.Params.Add('rec_version');
  Transaction2.Params.Add('nowait');

  Transaction3 := TIBCTransaction.Create(nil);
  Transaction3.DefaultConnection := Conexion;
  Transaction3.Params.Clear;
  Transaction3.Params.Add('read_committed');
  Transaction3.Params.Add('rec_version');
  Transaction3.Params.Add('nowait');

  Transaction4 := TIBCTransaction.Create(nil);
  Transaction4.DefaultConnection := Conexion;
  Transaction4.Params.Clear;
  Transaction4.Params.Add('read_committed');
  Transaction4.Params.Add('rec_version');
  Transaction4.Params.Add('nowait');

  Transaction5 := TIBCTransaction.Create(nil);
  Transaction5.DefaultConnection := Conexion;
  Transaction5.Params.Clear;
  Transaction5.Params.Add('read_committed');
  Transaction5.Params.Add('rec_version');
  Transaction5.Params.Add('nowait');

  Transaction6 := TIBCTransaction.Create(nil);
  Transaction6.DefaultConnection := Conexion;
  Transaction6.Params.Clear;
  Transaction6.Params.Add('read_committed');
  Transaction6.Params.Add('rec_version');
  Transaction6.Params.Add('nowait');

  Transaction7 := TIBCTransaction.Create(nil);
  Transaction7.DefaultConnection := Conexion;
  Transaction7.Params.Clear;
  Transaction7.Params.Add('read_committed');
  Transaction7.Params.Add('rec_version');
  Transaction7.Params.Add('nowait');

  Transaction8 := TIBCTransaction.Create(nil);
  Transaction8.DefaultConnection := Conexion;
  Transaction8.Params.Clear;
  Transaction8.Params.Add('read_committed');
  Transaction8.Params.Add('rec_version');
  Transaction8.Params.Add('nowait');

  Transaction9 := TIBCTransaction.Create(nil);
  Transaction9.DefaultConnection := Conexion;
  Transaction9.Params.Clear;
  Transaction9.Params.Add('read_committed');
  Transaction9.Params.Add('rec_version');
  Transaction9.Params.Add('nowait');

  Transaction10 := TIBCTransaction.Create(nil);
  Transaction10.DefaultConnection := Conexion;
  Transaction10.Params.Clear;
  Transaction10.Params.Add('read_committed');
  Transaction10.Params.Add('rec_version');
  Transaction10.Params.Add('nowait');

  Transaction11 := TIBCTransaction.Create(nil);
  Transaction11.DefaultConnection := Conexion;
  Transaction11.Params.Clear;
  Transaction11.Params.Add('read_committed');
  Transaction11.Params.Add('rec_version');
  Transaction11.Params.Add('nowait');
///=================================
  Query1 := TIBCQuery.Create(nil);
  Query1.Transaction := Transaction1;
  Query1.Connection := Conexion;
  Query1.FetchAll := True;

  Query2 := TIBCQuery.Create(nil);
  Query2.Transaction := Transaction2;
  Query2.Connection := Conexion;
  Query2.FetchAll := True;

  Query3 := TIBCQuery.Create(nil);
  Query3.Transaction := Transaction3;
  Query3.Connection := Conexion;
  Query3.FetchAll := True;

  Query4 := TIBCQuery.Create(nil);
  Query4.Transaction := Transaction4;
  Query4.Connection := Conexion;
  Query4.FetchAll := True;

  Query5 := TIBCQuery.Create(nil);
  Query5.Transaction := Transaction5;
  Query5.Connection := Conexion;
  Query5.FetchAll := True;

  Query6 := TIBCQuery.Create(nil);
  Query6.Transaction := Transaction6;
  Query6.Connection := Conexion;
  Query6.FetchAll := True;

  Query7 := TIBCQuery.Create(nil);
  Query7.Transaction := Transaction7;
  Query7.Connection := Conexion;
  Query7.FetchAll := True;

  Query8 := TIBCQuery.Create(nil);
  Query8.Transaction := Transaction8;
  Query8.Connection := Conexion;
  Query8.FetchAll := True;

  Query9 := TIBCQuery.Create(nil);
  Query9.Transaction := Transaction9;
  Query9.Connection := Conexion;
  Query9.FetchAll := True;

  Query10 := TIBCQuery.Create(nil);
  Query10.Transaction := Transaction10;
  Query10.Connection := Conexion;
  Query10.FetchAll := True;

  Query11 := TIBCQuery.Create(nil);
  Query11.Transaction := Transaction11;
  Query11.Connection := Conexion;
  Query11.FetchAll := True;

end;

destructor TEmpresaClass.Destroy;
begin
  inherited Destroy;
  Conexion.Free;
///=================================
  Transaction1.Free;
  Transaction2.Free;
  Transaction3.Free;
  Transaction4.Free;
  Transaction5.Free;
  Transaction6.Free;
  Transaction7.Free;
  Transaction8.Free;
  Transaction9.Free;
  Transaction10.Free;
  Transaction11.Free;
///=================================
  Query1.Free;
  Query2.Free;
  Query3.Free;
  Query4.Free;
  Query5.Free;
  Query6.Free;
  Query7.Free;
  Query8.Free;
  Query9.Free;
  Query10.Free;
  Query11.Free;
///=================================

  imgLogo.Free;
end;


procedure TEmpresaClass.Datos;
var
  SQL: string;
  I: integer;

  MemoryStreamLogo: TMemoryStream;
  JpgLogo: TJpegImage;
  fldCampoLogo: TField;
  StreamLogo: TStream;

  // variables para cedula
  MemoryStreamCedula: TMemoryStream;
  JpgCedula: TJpegImage;
  fldCampoCedula: TField;
  StreamCedula: TStream;
begin
  SQL := 'SELECT ';
  SQL := SQL + ' ID, RFC, NOMBRE, CALLE, NUMEXT, ';
  SQL := SQL + ' NUMINT, COLONIA, CP, ESTADO, MUNICIPIO,  ';
  SQL := SQL + ' PAIS, LEYENDA1, LEYENDA2,LOGO ';
  SQL := SQL + ' FROM DATOSEMPRESA';
  SQL := SQL + ' WHERE ID = ''' +   IntToStr(1) + '''';

    imgLogo := TImage.create(nil);

    Query1.Close;
    Query1.SQL.Clear;

    Query1.SQL.Add(SQL);
    Query1.Execute;

    for I := 0 to Query1.RecordCount - 1 do
    begin
        ID         := Query1.Fields[0].AsInteger;
        RFC        := Query1.Fields[1].AsString;
        NOMBRE     := Query1.Fields[2].AsString;
        CALLE      := Query1.Fields[3].AsString;
        NUMEXT     := Query1.Fields[4].AsString;
        NUMINT     := Query1.Fields[5].AsString;
        COLONIA    := Query1.Fields[6].AsString;
        CP         := Query1.Fields[7].AsString;
        ESTADO     := Query1.Fields[8].AsString;
        MUNICIPIO  := Query1.Fields[9].AsString;
        PAIS       := Query1.Fields[10].AsString;
        LEYENDA1   := Query1.Fields[11].AsString;
        LEYENDA2   := Query1.Fields[12].AsString;

   //procesamos el campo para logos
      JpgLogo := nil;
      MemoryStreamLogo := nil;
      try
        MemoryStreamLogo := TMemoryStream.create;
        fldCampoLogo     := Query1.FieldByName('LOGO') as TBlobField;
        StreamLogo       := Query1.CreateBlobStream(fldCampoLogo, bmRead);

        MemoryStreamLogo.LoadFromStream(StreamLogo);

        JpgLogo := TJpegImage.create;
        JpgLogo.LoadFromStream(MemoryStreamLogo);
        imgLogo.Picture.Assign(JpgLogo);
      except
        imgLogo.Picture.Assign(nil);
        JpgLogo.Free;
      end;
      JpgLogo.Free;
      MemoryStreamLogo.Free;

      Query1.Next;
    end;


end;

procedure TEmpresaClass.Actualiza(logo:string);
begin
              Query1.Close;
              Query1.SQL.Clear;
              Query1.SQL.Add('UPDATE DATOSEMPRESA SET ');
              Query1.SQL.Add('RFC = '''                   + RFC+ ''',');
              Query1.SQL.Add('NOMBRE = '''                + NOMBRE + ''',');
              Query1.SQL.Add('CALLE = '''                 + CALLE + ''',');
              Query1.SQL.Add('NUMEXT = '''        + NUMEXT + ''',');
              Query1.SQL.Add('NUMINT = '''        + NUMINT + ''',');
              Query1.SQL.Add('COLONIA = '''               + COLONIA + ''',');
              Query1.SQL.Add('CP = '''                    + CP + ''',');
              Query1.SQL.Add('ESTADO = '''                + ESTADO + ''',');
              Query1.SQL.Add('MUNICIPIO = '''             + MUNICIPIO + ''',');
              Query1.SQL.Add('PAIS = '''                  + PAIS+ '''');
              Query1.SQL.Add('WHERE ID = ''' +  IntToStr(1) + '''');
              Query1.ExecSQL;

    if (FileExists(logo)) then
    begin
      Query1.Close;
      Query1.SQL.Clear;
      Query1.SQL.Add('UPDATE DATOSEMPRESA SET LOGO = :blbLogo');
      Query1.SQL.Add('WHERE ID = ''' + IntToStr(1) + '''');
      Query1.ParamByName('blbLogo').LoadFromFile(logo, ftBlob);
      Query1.ExecSQL;
    end;
end;


procedure TEmpresaClass.Registra(logo:string);
begin
     Query1.Close;
     Query1.SQL.Clear;
     Query1.SQL.Add('INSERT INTO DATOSEMPRESA ');
     Query1.SQL.Add('(');
     Query1.SQL.Add(' RFC, NOMBRE, CALLE, NUMEXT, ');
     Query1.SQL.Add(' NUMINT, COLONIA, CP, ESTADO, MUNICIPIO,  ');
     Query1.SQL.Add(' PAIS, ACTIVADO, LOGO');
     Query1.SQL.Add(' )');
     Query1.SQL.Add('  VALUES');
     Query1.SQL.Add('( ');
     Query1.SQL.Add(' :RFC, :NOMBRE, :CALLE, :NUMEXT, ');
     Query1.SQL.Add(' :NUMINT, :COLONIA, :CP, :ESTADO, :MUNICIPIO,  ');
     Query1.SQL.Add(' :PAIS, :ACTIVADO, :LOGO');
     Query1.SQL.Add(' )');
     Query1.ParamByName('RFC').AsString           := RFC ;
     Query1.ParamByName('NOMBRE').AsString        := NOMBRE ;
     Query1.ParamByName('CALLE').AsString         := CALLE;
     Query1.ParamByName('NUMEXT').AsString        := NUMEXT;
     Query1.ParamByName('NUMINT').AsString        := NUMINT;
     Query1.ParamByName('COLONIA').AsString       := COLONIA;
     Query1.ParamByName('CP').AsString            := CP;
     Query1.ParamByName('ESTADO').AsString        := ESTADO;
     Query1.ParamByName('MUNICIPIO').AsString     := MUNICIPIO ; 
     Query1.ParamByName('PAIS').AsString          := PAIS;
     Query1.ParamByName('ACTIVADO').asinteger := 1;

         if FileExists(logo) then
    begin
      Query1.ParamByName('LOGO').LoadFromFile(logo, ftBlob);
    end;


     Query1.Execute;
end;

end.
Responder Con Cita