Foros del Web » Programando para Internet » PHP »

Error descarga mi archivo descarga.php

Estas en el tema de Error descarga mi archivo descarga.php en el foro de PHP en Foros del Web. Bueno creo que el tema lo dice les muestro mi script Código PHP: <?php $arch = $_GET [ archivo ]; $var =  explode ( "." ...
  #1 (permalink)  
Antiguo 06/09/2006, 10:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
Antigüedad: 19 años, 11 meses
Puntos: 0
Error descarga mi archivo descarga.php

Bueno creo que el tema lo dice les muestro mi script

Código PHP:
<?php

$arch
=$_GET[archivo];
$varexplode(".",$arch);
$i=0;
while(
1==1){
      if(
$var[$i]=="PDF"){
         
header ("Content-type: application/force-download");
         
header ("Content-type: application/pdf");
         
header ("Content-Disposition: attachment; filename=" basename ($arch)); 
         
header ("Content-Length: ".filesize($arch)); 
         
readfile ($arch);
         break; 
         }
//fin del if
         
$i++;
   }
//fin del while
?>
Y la liga que me lleva hacia alla

Código PHP:
echo "<a href=\"descarga.php?archivo=$ruta\" onMouseOver=\"window.status='$archivo';return true\"><font face=\"Berlin Sans FB\" size=4 color=\"black\">$archivo $tama</font></a>"
Cabe mencionar que algunos documentos estan guardado con mayusculas y otros con minusculas.
La variable archivo tiene valores como estos:

Medica/ARCHIVO 1.PDF
Medica/SUBCARPETA/OTRO, ARCHIVO.PDF
Otros/OTRO, EJEMPLO. PARA MOSTRAR.PDF

Dependiendo del documento que se elija desde un listado, a veces se descarga el docuemnto pdf correcto y aveces descarga.php aunque sin el codigo, solo el archivo en blanco.
Me pueden ayudar, estara incompleto mi script, le sobrara algo, ya necesito terminar con esto porfavor ayuda.
Si ejecuto desde mi servidor de manera local la pagina, funciona correctamente, pero desde internet ya no funciona bien, pasa lo que les comento.
Cualquier sugerencia es bien recibida y gracias.
__________________
Por muy fuerte que sea la tormenta, al final siempre sale el sol
  #2 (permalink)  
Antiguo 06/09/2006, 10:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías usar url_encode() para tu $ruta que propagas en tu link .. sino, tendrás problemas con esos nombres de archivos que contienen espacios (o caracteres acentuados, etc ..)

Código PHP:
echo "<a href=\"descarga.php?archivo=".url_encode($ruta)."\" onMouseOver=\"window.status='$archivo';return true\"><font face=\"Berlin Sans FB\" size=4 color=\"black\">$archivo $tama</font></a>"
A su vez en el script PHP que recibe el dato (descargar.php) no sé si tendrás que usar la función inversa: url_decode() ..

Otro detalle . .No sé para que haces ese "While(1=1)" .. Si quieres tomar la "extensión" de un archivo que viene en un string, puedes usar explode() (eso genera un array) .. usando funciones de array puedes tomar el últimio elemento con un "end()".

Código PHP:
$varexplode(".",$arch); 
$ext=end($var);
if(
$ext=="PDF"){ 
   
// compones tus cabeceras HTTP y envias el archivo al buffer de salida.

Sobre las cabceras HTTP usadas .. no usaría.
header ("Content-type: application/force-download");

Ya lo defines con:
header ("Content-type: application/pdf");

Y si quieres que el documento se vea en línea .. usa:
header ("Content-Disposition: inline; filename=" . basename ($arch));

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 06/09/2006, 10:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 74
Antigüedad: 19 años, 11 meses
Puntos: 0
Ok. Gracias por contestar

Probare en mi servidor y desde internet, pero mi duda sigue estando, porque algunos archivos aveces se descargan y a veces no (cuando no el que se baja es descarga.php), es por los espacios, ningun documento esta acentuado, pero si tienen espacios, comas y puntos antes del ".pdf" de verdad que ya estoy un poco desesperada con lo mismo, porque de manera local en el servidor lo hace correcto todo, el problema es ya desde internet.
__________________
Por muy fuerte que sea la tormenta, al final siempre sale el sol
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 20:44.