Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/12/2003, 18:25
Mr_Trukito
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago de Chile
Mensajes: 2
Antigüedad: 20 años, 3 meses
Puntos: 0
Descarga de contenido mediante PHP.... ayuda please

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");
            
$contenidofile_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($res0"tipo");
             @
$contenido mysql_result($res0"contenido");
            
$contenido=base64_decode($contenido);
            }
        } else {
            
$qry "SELECT tipo, contenido FROM ".$_GET["tabla"]." WHERE nombre='".$_GET['filename']."'";
             
$res mysql_query($qry);
             @
$tipo mysql_result($res0"tipo");
             @
$contenido mysql_result($res0"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,

Última edición por Mr_Trukito; 28/12/2003 a las 18:34