Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2010, 14:11
sesebas
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 16 años
Puntos: 1
Descarga de archivos en PHP funciona, pero....

Hola a todos,

Disculpen que habra un nuevo tema para una consulta que ya he hecho, pero necesito de su ayuda porque no consigo obtener lo que necesito.

Tengo tres select asociados que manejo con JavaScript y PHP donde el último (Selector3) es múltiple. Tengo tres botones, dos hacen un submit para coseguir desplegar en pantalla las archivos htm asociados a las opciones seleccionadas por el usuario. El tercer boton en cambio llama una función con la idea de dar la alternativa de descargar directamente los archivos asociados a la selección realizada sin pasar por desplegarlos en pantalla, los archivos para descarga tienen formato xls. Mi problema es que ahora funciona todo bien hasta el momento en que debo servir los archivos para descarga con php, cuando llega a este punto (según el seguimiento que hago con firebug) la única opción de descarga que obtengo es para el último archivo que he enviado a PHP. El código es el siguiente (recorté la línea en el "location.href" para ahorrar espacio aquí):

Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/JavaScript">
  2.  
  3.  var archivos=new Array();//ponemos estas variables fuera de las funciones para que estén disponibles globalmente
  4.  var indiceActual=1;
  5.  var downloader;
  6.     function DownFunction(){
  7.  
  8.             var x =1;
  9.                 for(i in document.form1.selector3.options){
  10.                    if(document.form1.selector3.options[i].selected)
  11.                          {
  12.                         archivos[x]=document.form1.selector3.options[i].value;//cargamos los archivos a descargar en esta variable global
  13.                         archivos[x]=archivos[x].replace(".htm",".xls");  
  14.                             x++;
  15.                                                 }
  16.                       }
  17.  
  18.                                     descargame=function()//definimos la función que se encargará de llamar a las descargas.           }
  19.                  {
  20.                  if(archivos[indiceActual])
  21.                         {
  22.                                     location.href=".../download.php?archivo="+archivos[indiceActual];
  23.                         }
  24.                  else
  25.                         {
  26.                        indiceActual=1;
  27.                        archivos=new Array();
  28.                        clearInterval(downloader);//una vez que se han descargado todos, eliminamos el intervalo y limpiamos las variables
  29.                        }
  30.                  }
  31.           downloader=setInterval(descargame,1000);// aqui definimos el intervalo con un espacio de 1 segundo entre una descarga y otra.
  32.           }
  33.  
  34. </script>


El código en "download.php"

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (!isset($_GET['archivo']) || empty($_GET['archivo'])) {
  4.     exit();
  5. }
  6.  
  7. $root = ".../ExcelFiles/";
  8. $archivo = basename($_GET['archivo']);
  9. $path = $root.$archivo;
  10.                                                                                                                                                    
  11. $type = '';                                                              
  12.     $type = "application/force-download";                                
  13.                                                                          
  14.                                                                          
  15.     header("Content-Type: $type");                                        
  16.     header("Content-Disposition: attachment; filename=$archivo");        
  17.     header("Content-Transfer-Encoding: binary");                          
  18.     header("Content-Length: " . $size);                                  
  19.                                                                          
  20.     readfile($path);                                                      
  21.  
  22. ?>

Agradezco toda la ayuda que me puedan brindar.