Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/09/2005, 08:33
parrieta
 
Fecha de Ingreso: agosto-2005
Mensajes: 6
Antigüedad: 18 años, 8 meses
Puntos: 0
Recuperar archivos tipo Blop eb postgres con PHP

Hola a todos espero puedan ayudarme, cree en una bd postgres una tabla para guardar imagenes y me las guarda bien pero cuando la quiero mostrar en pantalla me sale un recuadro con una x roja y la verdad no veo el error, porfavor si me pueden ayudar se les agradezco el codigo que estoy usando para mostrar las imagenes de la bd es el siguiente:

<?
# El parámetro f=1 indica que se va a forzar a bajar el archivo
$f=isset($_REQUEST['f'])?$_REQUEST['f']:0;
# Recupera el id pasado como parámetro
$id=isset($_REQUEST['id'])?$_REQUEST['id']:0;

# Conexión a la base de datos
include("conexion.php");
$vconexion=Conectarse();
# Recupera el archivo en base al ID
$sql = "select serial, nombre, descripcion, mime, size, coalesce(archivo_oid,-1) as archivo_oid
from foo where serial='$id'";
$result=pg_query($vconexion, $sql);
# Si no existe, redirecciona a la página principal
if(!$result || pg_num_rows($result)<1){
header("Location: subirfoto.php");
exit();
}
# Recupera los atributos del archivo
$row=pg_fetch_array($result,0);
pg_free_result($result);
# Para determinar si archivo a bajar fue ingresado al campo archivo_oid (es de tipo "oid")
$isoid=false;
//if($row['archivo_bytea']==-1) $isoid=true;
if($row['archivo_oid']==-1) $isoid=true;
if ($row['archivo_oid']==-1) die('No existe el archivo para mostrar o bajar');
if($isoid){
# Inicia la transacción
pg_query($vconexion, "begin");
# Abre el objeto blob
$file=pg_lo_open($vconexion, $row['archivo_oid'], "r");
}
else{
# Hace el proceso inverso a pg_escape_bytea, para que el archivo esté en su estado original
$file=pg_unescape_bytea($row['archivo_bytea']);
}
# Envío de cabeceras
header("Cache-control: private");
header("Content-type: $row[mime]");
if($f==1)
header("Content-Disposition: attachment; filename=\"$row[nombre]\"");
header("Content-length: $row[size]");
header("Expires: ".gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y")))." GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

if($isoid){
# Imprime el contenido del objeto blob
pg_lo_read_all($file);

# Cierra el objeto
pg_lo_close($file);
# Compromete la transacción
pg_query($vconexion, "commit");
}
else{
# Imprime el contenido del archivo
print $file;
}
pg_close($vconexion);
?>