PHP - Subida de archivos comprimidos al servidor

 
Vista:
Imágen de perfil de Álvaro
Val: 65
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Subida de archivos comprimidos al servidor

Publicado por Álvaro (22 intervenciones) el 15/10/2019 01:33:44
Buenas noches, estoy trabajando en un pequeño ejercicio que trata de subir archivos comprimidos usando la clase ZipArchive. Los archivos los consigo cargar, sin embargo, el fichero comprimido no me lo genera, y no encuentro el posible fallo. He impreso la variable donde almaceno la apertura / creación del archivo .zip, me aparece el nombre que le asigné pero no va más allá. Aquí les dejo el código de la función donde se encuentra el trato con la clase ZipArchive:

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
function subirFicherosComprimidos($compressedFile)
{
 
    $ficheroComprimido = new ZipArchive();
 
 
    $ficheroComprimido->open("ficheroComrpimido.zip", ZipArchive::CREATE);
 
        if (file_exists("ficheroComprimido.zip")) {
            echo "El archivo está en " . dirname("ficheroComprimido.zip");
        } else {
            echo "El fichero no existe.";
        }
 
        $ficheroComprimido->addFile("ficheroComprimido.zip", $compressedFile['name']);
 
        echo "<br><pre>";
        echo var_dump($ficheroComprimido);
        echo "</pre>";
 
        $ficheroComprimido->addFile("ficheroComprimido.zip", $compressedFile['name']);
 
        echo "<br><pre>";
        echo var_dump($ficheroComprimido);
        echo "</pre>";
 
 
        $ficheroComprimido->close("ficheroComprimido.zip");
 
}

Agradecería cualquier ayuda/consejo. Muchas gracias
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 joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Subida de archivos comprimidos al servidor

Publicado por joel (1269 intervenciones) el 15/10/2019 11:15:17
Hola Álvaro, exacatemente $compressedFile que es? un array de nombres de archivos del disco? o un archivo subido por el usuario ($_FILE)?
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
Imágen de perfil de Álvaro
Val: 65
Ha disminuido su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Subida de archivos comprimidos al servidor

Publicado por Álvaro (12 intervenciones) el 15/10/2019 12:06:14
$compressedFile es un parámetro que le paso. Error mío por no especificar el código PHP, pido disculpas.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function subirFicheros()
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (isset($_FILES['ficheroSubido'])) {
            $fichero = $_FILES['ficheroSubido'];
            $nombre = $_FILES['ficheroSubido']['name'];
            $rutaTemporal = $_FILES['ficheroSubido']['tmp_name'];
            $tamanyoArchivo = $_FILES['ficheroSubido']['size'];
            $tipoArchivo = $_FILES['ficheroSubido']['type'];
        }
    }
 
    $rutaSubida = "./FicherosSubidos/";
    $rutaDefinitiva = $rutaSubida . $nombre;
 
    if (!is_dir($rutaSubida)) {
        mkdir($rutaSubida);
    }
 
    if (move_uploaded_file($rutaTemporal, $rutaDefinitiva)) {
        echo 'El fichero ha sido cargado.';
    } else {
        echo 'No se ha podido mover el fichero.';
    }
 
    return $fichero;
}
 
function subirFicherosComprimidos($compressedFile)
{
 
    $ficheroComprimido = new ZipArchive();
 
 
    $ficheroComprimido->open("./FicherosComprimidos/ficheroComprimido.zip", ZipArchive::CREATE);
 
    if (file_exists("./FicherosComprimidos/ficheroComprimido.zip")) {
        echo "El archivo está en " . dirname("ficheroComprimido.zip"); //CORREGIR
    } else {
        echo "<br>El fichero no existe.";
    }
 
    $ficheroComprimido->addFile("./FicherosComprimidos/ficheroComprimido.zip", $compressedFile['name']);
 
 
    $ficheroComprimido->addFile("./FicherosComprimidos/ficheroComprimido.zip", $compressedFile['name']);
 
    $ficheroComprimido->close("./FicherosComprimidos/ficheroComprimido.zip");
}
 
$ficheroSubido = subirFicheros();
subirFicherosComprimidos($ficheroSubido);
 
echo "<hr>";
 
$archivosDirectorio = scandir("./FicherosSubidos/");
sort($archivosDirectorio);
 
foreach ($archivosDirectorio as $ficherosDirectorio) {
        echo "=> " . $ficherosDirectorio . "<br>";

Aquí se puede ver que $compressedFile es simplemente un parámetro para hacer más genérica la función
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
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Subida de archivos comprimidos al servidor

Publicado por joel (1269 intervenciones) el 15/10/2019 15:09:15
Hola Álvaro, ahora lo veo... gracias.

El problema es que el addFile esta mal!!!
Como primer parámetro tiene que ser el nombre del archivo a comprimir, y como segundo la ubicación del archivo en el disco duro... algo así:
$ficheroComprimido->addFile($compressedFile['name'], $compressedFile['tmp_name']);

https://www.php.net/manual/en/ziparchive.addfile.php


Recuerda que la linea 43 esta repetida en la linea 46
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