Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/05/2010, 00:09
alfredo22r
 
Fecha de Ingreso: septiembre-2007
Mensajes: 9
Antigüedad: 16 años, 7 meses
Puntos: 0
Ayuda PHP y PostgreSQL campo BYTEA

Hola, necesito ayuda con un problema. Tengo una tabla llamada preguntas y tiene un campo tipo BYTEA donde quiero almacenar archivos.

Tengo 2 paginas, index.php y donwload.php. El archivo que quiero guardar es un Excel .xls de prueba llamado HorarioAbril-Mayo.xls, En la primera pagina guardo el archivo en la base de datos y en la segunda lo descargo. Todo funciona bien pero mi problema es que al momento de descargar el archivo me descarga un archivo llamado HorarioAbril-Mayo.xls y al momento de abrirlo se abre el Excel y me sale un error que dice:

El archivo que intenta abrir, 'HorarioAbril-Mayo.xls', tiene otro formato que el especificado por la extension de archivo. Compruebe que el archivo no esta dañado y procede de un origen de confianza antes de abrirlo. ¿Desea abrir el archivo ahora?

Le hago click a Si y se abre el archivo pero en codigo de maquina, me salen caracteres raros, x ejemplo:

ÐÏࡱá>þÿ Øþÿÿÿiÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÚ 


Este es mi codigo de la pagina index.php:

<?php

$conexion_bd = pg_connect("host=localhost dbname=ISO17799 user=postgres password=postgres")
or die('No pudo conectarse: ' . pg_last_error());

$t='"';

$file = "C:\Users\Alfredo\Desktop\HorarioAbril-Mayo.xls";

$nombre = basename($file);

echo "<br>";

$data = file_get_contents($file);

$escaped = pg_escape_bytea($data);

$cod = "0";

$consulta = "UPDATE preguntas SET ".$t."bArchiv".$t."='$escaped' WHERE ".$t."cCodPre".$t."='$cod'";

$resultado = pg_query($consulta) or die('Consulta fallida: ' . pg_last_error());


$row=pg_fetch_array($resultado);



?>

<a href="download.php?id=$row&f=1" title="Baja el archivo">Bajar</a>



Y este es mi codigo de la pagina download.php:

<?php

$conexion_bd = pg_connect("host=localhost dbname=ISO17799 user=postgres password=postgres")
or die('No pudo conectarse: ' . pg_last_error());


$f=isset($_REQUEST['f'])?$_REQUEST['f']:0;

$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);

$file=pg_unescape_bytea($row[4]);

header("Cache-control: private");
header("Content-type: txt");

if($f==1)
header("Content-Disposition: attachment; filename=HorarioAbril-Mayo.xls");

print $file;

?>



Porfavor espero puedan ayudarme, este problema no logro resolverlo de ninguna manera. Gracias


Saludos.

Última edición por alfredo22r; 13/05/2010 a las 11:24 Razón: problema anterior solucionado