Hola.... saben que tengo un problema con un script PHP. Se trata de una aplicación que me permite descargar contenido desde una base de datos MySQL en forma de archivos (JPG, GIF, DOC, ZIP, etc). La fuente del script es la siguiente:
Código PHP:
/*archivos.php
(C)2003 por Mr_Trukito. All Rights Reserved
*/
<?php require ("config_db.php"); ?>
<? if ($_GET["app"] !="download") {
include ("header.inc");
if (!isset($_GET["app"])) { ?>
<form enctype="multipart/form-data" action="?app=upload" method="post" />
Descripción <input type="text" name="titulo" size="30" />
Ubicación <input type="file" name="nombrearchivo" />
Tabla <input type="text" name="tabla" size="20" />
<input type="submit" value="Enviar archivo">
</form>
<?php } if ($_GET["app"]=="upload") {
$conn=mysql_connect($db_server,$db_username,$db_password);
mysql_select_db($db_database,$conn);
$file_temp=$_FILES["nombrearchivo"]["tmp_name"];
$file_size=$_FILES["nombrearchivo"]["size"];
$file_type=$_FILES["nombrearchivo"]["type"];
$file_name=$_FILES["nombrearchivo"]["name"];
$titulo=$_POST["titulo"];
if ($archivo!="none") {
$fp = fopen($file_temp, "rb");
$contenido= file_get_contents($file_temp);
$contenido = base64_encode($contenido);
fclose($fp);
if ($tabla == "") {
$qry="INSERT INTO archivos VALUES (0,'$file_name','$titulo','$contenido','$file_type')";
} else {
$qry="INSERT INTO ".$tabla." VALUES (0,'$file_name','$titulo','$contenido','$file_type')";
}
mysql_query($qry);
if (mysql_affected_rows($conn) > 0) print "Se ha guardado el archivo en la base de datos.";
else print "NO se ha podido guardar el archivo en la base de datos.";
}
else print "No se ha podido subir el archivo al servidor";
}
include ("footer.inc");
}
if ($_GET["app"]=="download") {
$conn=mysql_connect($db_server,$db_username,$db_password);
mysql_select_db($db_database,$conn);
if (isset($_GET["filename"])) {
if (!isset($_GET["tabla"])) {
$qry = "SELECT tipo, contenido FROM archivos WHERE nombre='".$_GET['filename']."'";
$res = mysql_query($qry);
@$tipo = mysql_result($res, 0, "tipo");
@$contenido = mysql_result($res, 0, "contenido");
$contenido=base64_decode($contenido);
}
} else {
$qry = "SELECT tipo, contenido FROM ".$_GET["tabla"]." WHERE nombre='".$_GET['filename']."'";
$res = mysql_query($qry);
@$tipo = mysql_result($res, 0, "tipo");
@$contenido = mysql_result($res, 0, "contenido");
$contenido=base64_decode($contenido);
}
header("Content-type: $tipo");
print $contenido;
} ?>
Para descargar un archivo, a esta aplicación le entrego el nombre de archivo mediante URL. Por ejemplo, para descargar el archivo "programa.zip", utilizo la url
http://localhost/archivos.php?app=do...e=programa.zip
Hasta aquí va todo bien, pero el problema surge, cuando el browser le asigna un nombre al archivo que se va a descargar. El archivo queda con el nombre del script (en este caso, se descarga como "archivo.php"), y lo ideal sería que se le asignara el nombre "archivo.zip", o el nombre que debiese tener, cuando corresponda.
¿Qué debo agregar a la aplicación para que funcione correctamente? :?:
Muchas gracias,