Foros del Web » Programando para Internet » PHP »

ayuda con variable

Estas en el tema de ayuda con variable en el foro de PHP en Foros del Web. Hola a todos Tengo el siguiente problema, no se como ponerle la variable de la ruta donde se encuentra el archivo de esta manera no ...
  #1 (permalink)  
Antiguo 15/04/2004, 10:19
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 2
ayuda con variable

Hola a todos
Tengo el siguiente problema, no se como ponerle la variable de la ruta donde se encuentra el archivo

de esta manera no me funciona
<?php
$archivo = 'arch.log';
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="$archivo"');

readfile($archivo);

?>

desde ya si me pueden dar una mano se los agradecere mucho
muchas gracias y saludos a todos
  #2 (permalink)  
Antiguo 15/04/2004, 10:42
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 5 meses
Puntos: 0
seguro que el archivo "arch.log" se encuentra en el mismo directorio donde está ubicado el script??
  #3 (permalink)  
Antiguo 15/04/2004, 10:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La ruta que deberías indicar sería absoluta tipo:

(windows) c:\nose\archivos\arch.log
(linux) \var\www\nose\archivos\arch.log

Siempre desde el raiz de ese servidor .. dato que puedes obtener con $_SERVER['DOCUMENT_ROOT'] ...

Dependiendo de la configuración de PHP que uses ..podrías usar también rutas relativas tipo:

http://www.nose.tal/archivos/elarchivo.tal

Y también
../../archivos/elarchivo.tal

Es más seguro que uses rutas absolutas en tus llamadas a los archivos y si puedes .. deja tus archivos fuera del alcance del "DOCUMENT_ROOT" (por encima de el). Así no te podrán hacer un acceso directo al archivo tipo: http://www.tal.tal/archivo.tal por qué no estára ahí .. y php será el que lo lea desde donde esté para entregarlo a descargar.

Por lo demás .. para el nombre del archivo que se va a ofrecer en la ventana de descarga, quedate con el nombre del archivo sólo (sin ruta) para eso puedes emplear la función basename() ...

Código PHP:
<?php
$archivo 
'/var/www/nosedondelotengas/nose/arch.log';
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.basename($archivo).'"');

readfile($archivo);

?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 15/04/2004, 12:04
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 2
Gracias Cluster, es perfecta tu respuesta pero tengo una pregunta mas sobre el mismo tema.
Por que no puedo descargar mas de 64,0KB

Downloaded 64,0 in 1 Sec
Tranferate 64,0K/Sec

desde ya muchas gracias
  #5 (permalink)  
Antiguo 15/04/2004, 14:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Revisa el tamaño de tu archivo .. readfile() se supone que lo lee entero ..

Lo otro que puedes definir en las cabeceras HTTP es el tamaño de tu archivo que vas a entregar para descarga en la cabecera tipo:

Código PHP:
header("Content-Length: " filesize($archivo)); 
Te recomiendo leer la documentación de header() en los comentarios de los usuarios encontraras más cabeceras HTTP y comentarios al respecto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 09:00.