PHP - Como descargar un zip de una carpeta con sus subcarpetas y archivos?

 
Vista:
sin imagen de perfil
Val: 17
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como descargar un zip de una carpeta con sus subcarpetas y archivos?

Publicado por Painzer (7 intervenciones) el 20/11/2018 07:37:52
Buenos días programadores!

Necesito ayuda con esto, ya que llevo días intentando que me funcione pero no hay manera.

Tras buscar mucho en muchos foros y páginas, encontré este código que me parece funcionar porque lee los archivos de la ruta que le digo pero al crear el zip está vacío o me da error al abrirlo una vez descargado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function agregar_zip($dir, $zip) {
    if (is_dir($dir)) {
        if ($da = opendir($dir)) {
            while (($archivo = readdir($da)) !== false) {
                if (is_dir($dir . $archivo) && $archivo != "." && $archivo != "..") {
                    echo "<strong>Creando directorio: $dir$archivo</strong><br/>";
                    agregar_zip($dir . $archivo . "/", $zip);
                } elseif (is_file($dir . $archivo) && $archivo != "." && $archivo != "..") {
                    echo "Agregando archivo: $dir$archivo <br/>";
                    $zip->addFile($dir . $archivo, $dir . $archivo);
                }
            }
            closedir($da);
        }
    }
}
 
ini_set("memory_limit","1256M");
$zip = new ZipArchive();
$dir = '../zip/';
$rutaFinal = "../";
$archivoZip = "descarga.zip";
 
if ($zip->open($archivoZip, ZIPARCHIVE::CREATE) === true) {
    agregar_zip($dir, $zip);
    $zip->close();
    if (file_exists($rutaFinal . "/" . $archivoZip)) {
        echo "Proceso Finalizado!! <br/><br/>
                Descargar: <a href='$rutaFinal/$archivoZip'>$archivoZip</a>";
    } else {
        echo "Error, archivo zip no ha sido creado!!";
    }
}

Alguien que me pueda ayudar por favor.

Un saludo,
Painzer.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.081
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como descargar un zip de una carpeta con sus subcarpetas y archivos?

Publicado por xve (6932 intervenciones) el 20/11/2018 10:35:11
Hola Painzer, yo he probado tu código y me ha funcionado perfectamente!!!
Has probado con una carpeta con pocos archivos?
Tienes habilitados los errores en PHP? por si hubiera algún error de carpetas? en mi caso, he tenido que modificar algo, ya que el archivo .zip, lo he dejado en la misma carpeta donde se encuentra el archivo php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como descargar un zip de una carpeta con sus subcarpetas y archivos?

Publicado por Painzer (7 intervenciones) el 20/11/2018 11:12:38
Hola xve,

Si, tengo 4 carpetas con un archivo en cada una solo. En dos de esas carpetas tengo una imagen .jpg en cada, en otra un .xml y en otra un .sqlite

He probado tambien como dices a dejarlo en la misma carpeta del php pero nada.. Y si, tengo habilitados los error en php tambien. Crear me crea el archivo zip pero vacio o con error al abrirlo.

Un saludo,
Painzer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha disminuido su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como descargar un zip de una carpeta con sus subcarpetas y archivos?

Publicado por Painzer (7 intervenciones) el 21/11/2018 12:22:31
Después de mucho buscar, era una tontería. Resulta que al tener el script en otra ruta me cogía como primera carpeta comprimida los dos puntos de "../zip".

Con lo cual queda finalizado este post. Muchas gracias xve por toda la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 3.081
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como descargar un zip de una carpeta con sus subcarpetas y archivos?

Publicado por xve (6932 intervenciones) el 21/11/2018 15:09:45
Gracias por comentarlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar