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.