Ir al contenido


Foto

Problemas con headers


  • Por favor identifícate para responder
4 respuestas en este tema

#1 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 21 marzo 2013 - 12:54

Saludos amigos, de antemano gracias por atender este post, tengo el siguiente problema, estoy tratando de bajar archivos de un sitio, estos archivos los listo en un "form" con checkboxs, esto con el fin de que el usuario seleccione los archivos y los que estén marcados los mando a otro archivo php para descargarlos.

Al momento de pasara del form al php verifico y si envía bien el array de archivos a descargar, el problema es cuando uso la función para descargar que tengo, y es que usa "headers" y quiero ver si es por eso que sólo me descarga el primer archivo del arrary, luego no hace nada ni error ni nada, este es mi código para descargar:





<?php

$areglo=$_GET['mifiles'];

function descargar_archivo($ruta){
$size = $_SERVER["DOCUMENT_ROOT"].$ruta;

if (file_exists($size)){
$type="application/force-download";

header("Content-Type: $type");
header("Content-Disposition: attachment; filename=".basename($ruta));
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$bites);
// Descargar archivo
readfile($size);

                //si comentarreo los headers y pongo esta linea me muestra bien los "n" archivos del array
//echo "Tipo: ".$type."<br>file: ".basename($ruta)."<br>Size: ".$bites."<br>busca: ".$size."<br>Ruta: ".$ruta."<br>Terminado.....................<br><br>";
}
}


foreach($_GET['mifiles'] as $chekado){
  descargar_archivo($chekado);
}

?>


alguna sugerencia o algo que no estoy tomando en cuenta, saludos y gracias.
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 21 marzo 2013 - 01:04

el header aplica solo para un archivo amigo. si requieres descargar varios podrías comprimirlos y descargar el comprimido....
  • 0

#3 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 21 marzo 2013 - 01:08

el header aplica solo para un archivo amigo. si requieres descargar varios podrías comprimirlos y descargar el comprimido....


gracias por contestar pronto, si efectivamente considere esa opción, pero el usuario a fuerza quiere descargarlos de manera separada, es decir uno por uno, habrá alguna forma de hacerlo o reiniciar los headers?
  • 0

#4 porfi.dev

porfi.dev

    Advanced Member

  • Miembros
  • PipPipPip
  • 183 mensajes
  • LocationMy House @ México

Escrito 26 marzo 2013 - 03:18

O envialo a una pagina que te genere los vinculos y se muestren los archivos que el quiera descargar, para que se ocupe de hacer clic derecho y escoger guardar como.

o utilizar la función move_upload_file, para mover los archivos necesarios a una carpeta donde el pueda descargarlos. Generar varios headers pues no le veo mucho caso, forzar la descarga siempres sera para solo 1 archivo, despues del segundo los antivirus lo pueden detectar como un ataque.
  • 0

#5 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 27 marzo 2013 - 08:30

Se me ocurre también la posibilidad de genera un archivo compriomido que contenga todos los archivos. así sería solo una descarga. Podrías crear un proceso en php que comprima y envie  el archivo.
  • 0




IP.Board spam blocked by CleanTalk.