Re: Ayuda con campo BYTE y pg_unescape_bytea

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: Alfredo Zea García Calderón <alfredoaal(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con campo BYTE y pg_unescape_bytea
Date: 2010-05-16 14:05:35
Message-ID: AANLkTinpsUZcH_9mOcbeCexq1-MI1nUMcDXNfJnECaNH@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

que tal, puedes cambiar esto por favor y ver como te va.

$consulta = "SELECT * FROM preguntas WHERE ".$t."cCodPre".$t."='$cod'";

Por

Los campos y donde sea bytea pone esto

coalesce(archivo_bytea,'-1') as archivo_bytea

y revisa este link, tengo un sitio de pruebas andando con bytea y oid
y funciona bien, hay un ejemplo bueno aca.
http://www.buayacorp.com/archivos/guardar-y-recuperar-un-archivo-en-un-campo-blob-de-postgresql-con-php/

Espero te sirva.

2010/5/14 Alfredo Zea García Calderón <alfredoaal(at)gmail(dot)com>:
> Hola, necesito ayuda porfavor. Estoy tratando de descargar un archivo subido
> a un campo BYTEA, mi problema es que al momento de descargarlo se muestran
> solo caracteres y en el caso de ser una imagen me sale un error que dice
> archivo corrupto.
>
> Este es el codigo con el que inserto el archivo en la BD:
>
> $conexion_bd = pg_connect("host=localhost dbname=ISO17799 user=postgres
> password=postgres")
>    or die('No pudo conectarse: ' . pg_last_error());
>
>
> $file = "C:\Users\Alfredo\Desktop\imagen.jpg";
>
> $data = file_get_contents($file);
>
> $escaped = pg_escape_bytea($data);
>
> $t='"';
> $cod = "0";
>
> $consulta = "UPDATE preguntas SET ".$t."bArchiv".$t."=E'$escaped'::bytea
> WHERE ".$t."cCodPre".$t."='$cod'";
>
> $resultado = pg_query($consulta) or die('Consulta fallida: ' .
> pg_last_error());
>
>
>
>
> Y este es el codigo con el que descargo el archivo:
>
>
> header('Content-type: image/jpg');
>
> $conexion_bd = pg_connect("host=localhost dbname=ISO17799 user=postgres
> password=postgres")
>    or die('No pudo conectarse: ' . pg_last_error());
>
> $cod = "0";
> $t = '"';
> $consulta = "SELECT * FROM  preguntas WHERE ".$t."cCodPre".$t."='$cod'";
> $resultado =  pg_query($consulta) or die('Consulta fallida: ' .
> pg_last_error());
>
> $row = pg_fetch_array($resultado);
>
> pg_free_result($resultado);
>
> header("Cache-control: private");
>
> //$row[4] es la columna de la tabla que tiene el campo BYTEA
> $file=pg_unescape_bytea($row[4]);
>
>
> header("Content-Disposition: attachment; filename=imagen.jpg");
>
> print $file;
>
>
>
> Porfavor espero puedan ayudarme, no se como arreglar esto. Gracias.
>
> Saludos.

--
Saludos,
Horacio Miranda Aguilera.
RedHat Certified Engineer
DBA Oracle - Large databases
+56 2 8974500

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2010-05-17 04:20:30 Re: Error en pg_dump
Previous Message Horacio Miranda 2010-05-16 13:43:44 Re: Optimizacion de select(pregunta de novato)