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;
} ?>
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,