como forzar la descarga de ficheros de extensiones multiples con PHP?

Iniciado por hack-4-life, 15 Octubre 2011, 06:59 AM

0 Miembros y 1 Visitante están viendo este tema.

hack-4-life

Buenas a todos,he estado realizando un scrip que se me ocurrio que tal vez se pueda hacer o tal vez,me paso por la mente,el scrip que quiero hacer es algo sobre descarga de archivos multiples con php o forzar la descarga de multiples extensiones esto es lo que se hace al pasarle un valor a este codigo y forza la descarga

Código (php) [Seleccionar]

<?php 
$enlace 
="/".$id

header ("Content-Disposition: attachment; filename=".$id." "); 

header ("Content-Type: application/octet-stream");

header ("Content-Length: ".filesize($enlace));

readfile($enlace);

?>



y esta demas decir que para utizarlo se le pasa la ruta dowload?id=nombrearchivo.x

pero ahora viene lo bueno,lo que yo quiero hacer es que!
lo primero seria renombrar nuestro archivo download_multiple.php y con ese archivo cuando yo lo ejecute que me descargue todo lo que se encuentra en ese directorio ya sean .png,.jpg,.zip,.rar,.pdf,.mp3,.css  ficheros de multiples extensiones por asi decirlo!

buscando me he encontrado con unos codigos que tal vez alguno de ustedes expertos en el area me pudiera sugerir este es con que estoy tratando:

Código (php) [Seleccionar]

<?php
$file 
$_SERVER["DOCUMENT_ROOT"].'/.../.../'.$_GET['file'];

if(!
file) { // File doesn't exist, output error die('file not found'); } else {

//$file_extension = strtolower(substr(strrchr($file,"."),1));
$file_extension end(explode("."$file));

switch( 
$fileExtension)
{
case 
"pdf"$ctype="application/pdf"; break;
case 
"exe"$ctype="application/octet-stream"; break;
case 
"zip"$ctype="application/zip"; break;
case 
"doc"$ctype="application/msword"; break;
case 
"xls"$ctype="application/vnd.ms-excel"; break;
case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
case 
"gif"$ctype="image/gif"; break;
case 
"png"$ctype="image/png"; break;
case 
"jpeg":
case 
"jpg"$ctype="image/jpg"; break;
default: 
$ctype="application/force-download";
}

nocache_headers();

 
// Set headers
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public"); // required for certain browsers
header("Content-Description: File Transfer");
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=".$file.";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));

 
readfile($file);
?>



lo que entiendo por este codigo es que me descarga esos tipos de formatos de archivos,pero no se como implementarlo  tambien encontre algo asi creando un arreglo de extensiones de archivos


<?php
    $extensiones 
= array("PNG","zip","doc","rar","jpg");
    
$f $_GET["f"];
    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);
?>





pero no me funciona siempre me manda aqui y no entiendo si tengo todo bien   
die("<b>ERROR!</b> no es posible descargar archivos con la extensión $fExt");

y otra cosa que me gustaria implementar es listar todos los archivos de ese directorio para eso lo hago asi:


<?php
echo "<h3>Index</h3>\n";
echo 
"<table>\n";
$directorio opendir(".");
while (
$archivo readdir($directorio))
   {
   
$nombreArch ucwords($archivo);
   
$nombreArch str_replace("..""Atras"$nombreArch);
   echo 
"<tr>\n<td>\n<a href='$archivo'>\n";

   echo 
" border=0>\n";
   echo 
"<b>&nbsp;$nombreArch</b></a></td>\n";
   echo 
"\n</tr>\n";
   }
closedir($directorio); 
echo 
"</table>\n";
?>




de esta manera me lista todo el directorio y de ahi partir para forzar la descarga de todos  los ficheros con extensiones que contenga la carpeta! he estado leyendo el api de php pero viene algo parecido pero no le entiendo muy bien! http://php.net/manual/en/function.readfile.php
bueno seguire buscando como implementar para descargar multiples archivos o ficheros con direntes extensiones saludos xd y de antemano gracias!
""DE QUE SIRVE EL CONOCIMIENTO SI SE PRIVA DE SU DISTRIBUCION"