Foros del Web » Programando para Internet » PHP »

Problema para forzar descarga de archivo

Estas en el tema de Problema para forzar descarga de archivo en el foro de PHP en Foros del Web. Saludos Tengo un script para forzar la descarga de archivos, me funcion siempre y cuando se encuentren en la misma carpeta, el problema que el ...
  #1 (permalink)  
Antiguo 31/05/2011, 08:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Problema para forzar descarga de archivo

Saludos

Tengo un script para forzar la descarga de archivos, me funcion siempre y cuando se encuentren en la misma carpeta, el problema que el archivo a descargar siempre se encontrara en diferentes subcarpetas.. como puedo hacer funcionar esto

por ejemplo mi scrip esta en raiz del sitio.. y el arhivo ke kier hacer funcionar esta dentro de /eventos/5555/ $_GET["file"]

Código PHP:
$extensiones = array("jpg""jpeg""png""gif");
    
$f $_GET["file"];
    if(
strpos($f,"/")!==false){
        die(
"No puedes navegar por otros directorios");
    }
    
$ftmp explode(".",$f);
    
$fExt strtolower($ftmp[count($ftmp)-1]);

    if(!
in_array($fExt,$extensiones)){
        die(
"<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt");
    }

    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp); 
  #2 (permalink)  
Antiguo 31/05/2011, 08:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Problema para forzar descarga de archivo

Solo debes indicar la ruta del archivo. Podrías usar rutas absolutas o relativas, pero tienes que analizarlo desde donde está el archivo, es decir si está en un directorio dentro del directorio que está también el archivo de php, solo tienes que indicar directorio/archivo.jpg
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 31/05/2011, 10:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Problema para forzar descarga de archivo

No puedo meter el script dentro de cada carpeta por ke se generan solas y son muchas... necesito tenerlo en la raiz.. y de ahi buscar la carpeta con otra var URL para hacer pruebas intente poner la ruta... y me dice el el script no se puede navegar en otras carpetas


Código PHP:
<?php
 $extensiones 
= array("jpg""jpeg""png""gif");
    
$f "/5555/images/".$_GET["file"];
    if(
strpos($f,"/")!==false){
        die(
"No puedes navegar por otros directorios");
    }
    
$ftmp explode(".",$f);
    
$fExt strtolower($ftmp[count($ftmp)-1]);

    if(!
in_array($fExt,$extensiones)){
        die(
"<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt");
    }

    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp);
?>
  #4 (permalink)  
Antiguo 31/05/2011, 10:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Problema para forzar descarga de archivo

Como te indiqué, indica la ruta absoluta en el código.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 12/06/2011, 04:42
 
Fecha de Ingreso: mayo-2011
Mensajes: 16
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema para forzar descarga de archivo

yo lo tengo funcionando, lo único que me pasa es que en vez de abrirme una ventana para descargar el fichero, miro en la consola y tengo todo el volcado del fichero ahí...
he probado con .rar, .zip y .mp3

Etiquetas: descarga
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:30.