Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   php meter/sacar/update imagen binario de base de datos mysql/firebird (https://www.clubdelphi.com/foros/showthread.php?t=79305)

JXJ 24-06-2012 01:06:35

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.

JXJ 26-06-2012 19:19:39

hola aca preguntando sobre lo mismo

si ya tengo el archivo en la base de datos mysql. ¿como lo saco?


lo que quiero es sacar el archivo de el campo blob


poner el archivo en una carpeta..

tengo la query pero y ahora como lo paso a al discoduro???

Código PHP:

<?php
$username 
"root";
$password "a2210";
$host "localhost";
$database "login";

mysql_connect($host$username$password) or die("Can not connect to database: ".mysql_error());

mysql_select_db($database) or die("Can not select the database: ".mysql_error());

//$id = $_GET['id'];
//
//if(!isset($id) || empty($id) || !is_int($id)){
//         die("Please select your image!");
//}else{

//$query = mysql_query("SELECT * FROM ARCHIVOS WHERE ID='".$id."'");
$query mysql_query("SELECT * FROM ARCHIVOS WHERE ID= '".'1'."'");
$row mysql_fetch_array($query);
$content $row['image'];

header('Content-type: image/jpg');
         echo 
$content;
//}

?>


roman 26-06-2012 19:27:51

Puedes usar fwrite.

// Saludos

JXJ 27-06-2012 01:07:58

roman . gracias por la pista.

encontre este codigo de aqui http://zetcode.com/databases/mysqlphptutorial/
Código PHP:

<?php

$host 
"localhost"
$user "root"
$pass "a2210"
$db "login";

$r mysql_connect($host$user$pass);

if (!
$r) {
    echo 
"Could not connect to server\n";
    
trigger_error(mysql_error(), E_USER_ERROR);
} else {
    echo 
"Connection established\n"
}

$r2 mysql_select_db($db);

if (!
$r2) {
    echo 
"Cannot select database\n";
    
trigger_error(mysql_error(), E_USER_ERROR); 
} else {
    echo 
"Database selected\n";
}

$query "SELECT Data FROM archivos WHERE Id=2";
    
$rs mysql_query($query);

if (!
$rs) {
    echo 
"Could not execute query: $query";
    
trigger_error(mysql_error(), E_USER_ERROR); 
} else {
    echo 
"Query: $query executed\n";


$row mysql_fetch_row($rs);

//$file = "woman2.jpg";
$file "woman2.doc";
$img fopen($file'wb');

if (!
$img) {
    echo 
"Cannot open file for writing\n";
    
trigger_error("Cannot open file for writing\n"E_USER_ERROR);


$r3 fwrite($img$row[0]);

if (!
$r3) {
    echo 
"Cannot write image to file\n";
    
trigger_error("Cannot write image to file\n"E_USER_ERROR);


fclose($img);

mysql_close();

?>



La franja horaria es GMT +2. Ahora son las 03:21:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi