Magento2: Cómo lidiar con archivos zip


8

Necesito poder tratar los archivos zip mediante programación.

En magento 1.9 estaba haciendo:

$zip = new ZipArchive();

        if ($zip->open($Zippath) === TRUE) 
        {
            $zip->addFile($Filepath, $Filename);
            $zip->addFile($FilepathL, "toto.txt");
            $zip->close();
            return TRUE;    }

¿Cómo puedo hacer lo mismo en magento 2?

Respuestas:


6

Puedes hacer esto de la misma manera

$zip = new \ZipArchive();

if ($zip->open($Zippath) === TRUE) {
    $zip->addFile($Filepath, $Filename);
    $zip->addFile($Filepath, "toto.txt");
    $zip->close();
    return TRUE; 
}

Acabo de probar y aparece un error en $ zip-> close (); : Advertencia: ZipArchive :: close (): Error de lectura: es un directorio. Para $ FilePath tengo / foo / bar y $ FileName toto.txt
Alexglvr

Lo sentimos, se debió a un error tipográfico ... funcionando bien. respuesta solicitada
Alexglvr

8

Alternativamente , puede usar la clase de marco Magento de M2 ​​llamadaMagento\Framework\Archive\Zip y llamar al pack()método.

Por ejemplo, si inyectó la clase y la asignó a la $zipArchivevariable, puede hacer:

$this->zipArchive->pack($source, $destination);

3

Es básicamente un php class. No tiene nada que ver con Magento. Sin embargo, puede comprobar que la implementación sigue siendo la misma.

Aquí está la clase http://php.net/manual/en/class.ziparchive.php

Y aquí está la implementación en Magento2.

Si abres

lib \ internal \ Magento \ Framework \ Archive \ Zip.php encontrará esto

public function pack($source, $destination)
    {
        $zip = new \ZipArchive();
        $zip->open($destination, \ZipArchive::CREATE);
        $zip->addFile($source);
        $zip->close();
        return $destination;
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.