Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/09/2005, 11:15
El_Barto
 
Fecha de Ingreso: agosto-2005
Mensajes: 125
Antigüedad: 18 años, 8 meses
Puntos: 0
Forzar descargas con PHP

Hace tiempo que tengo un script que me está dando problemas.
Lo que necesito hacer es recibir por la URL la variable Id y la variable type, luego ver mi base de datos y forzar la descarga del archivo que tenga como Id el parámetro que pase por la URL, de la carpeta correspondiente según el type (el tipo de archivo que puede ser un currículum o un documento, los cuales se guardan en carpetas diferentes).
El código del archivo download.php es el siguiente:
Código PHP:
<?
//Incluyo la librería de funciones para usar la BBDD
include("includes/functions.php");

//Veo si estoy recibiendo los valores por la URL
if (isset($_GET['id']) && isset($_GET['type'])){
    
//Si es un CV, busco el nombre del archivo y compongo la ruta correspondiente
    
if($_GET['type'] == "cv"){
        
$conn conectar();
        
$ssql "SELECT * FROM equipo WHERE id = '" $_GET['id'] . "' LIMIT 1";
        
$rs preg($ssql);
        while(
$row mysql_fetch_object($rs)){
            
$archivo "cv/" $row->cv;
        }
    }else{
    
//Sino compongo la ruta para otro tipo de archivos
        
$conn conectar();
        
$ssql "SELECT * FROM materiales WHERE id = '" $_GET['id'] . "' LIMIT 1";
        
$rs preg($ssql);
        while(
$row mysql_fetch_object($rs)){
            
$archivo "docs/" $row->fichero;
        }
    }
}
//Funcion para descargar el archivo
function Descargar($ElFichero){

    
$TheFile basename($ElFichero);

    
header"Content-Type: application/octet-stream");
    
header"Content-Length: ".filesize($ElFichero));
    
header"Content-Disposition: attachment; filename=".$TheFile."");
    
readfile($ElFichero);
}


//Descargo el archivo en cuestión
Descargar($archivo);    

?>
Vale aclarar que el archivo functions.php que incluyo al principio no contiene más que declaraciones de funciones básicas para conectarme a la BBDD, hacer consultas, etc. No hay nada que pueda enviar headers.

El problema que me da cuando trato de usar el archivo es justamente que no se pueden enviar los headers porque ya fueron enviados antes.

Alguna idea de cual puede ser mi error o de otra forma de resolverlo???


Saludos y gracias.
__________________
Andrés Gattinoni
------------------------
¿Necesita un lugar en Internet? Hospedaje web en Argentina.
Planes desde $5 argentinos - Alojamiento ideal para Blogs