Magento2: come gestire i file zip


8

Devo essere in grado di trattare i file zip a livello di codice.

Nel magento 1.9 stavo facendo:

$zip = new ZipArchive();

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

Come posso fare lo stesso in magento 2?

Risposte:


6

Puoi farlo allo stesso modo

$zip = new \ZipArchive();

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

Ho appena provato e ricevo un errore su $ zip-> close (); : Avviso: ZipArchive :: close (): errore di lettura: è una directory. Per $ FilePath ho / foo / bar e $ FileName toto.txt
Alexglvr

Siamo spiacenti, era dovuto a un errore di battitura ... funzionava bene. risposta approvata
Alexglvr

8

In alternativa puoi usare la classe framework Magento di M2 chiamataMagento\Framework\Archive\Zip e chiamare il pack()metodo.

Ad esempio, se hai iniettato la classe e l' $zipArchivehai assegnata alla variabile puoi fare:

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

3

È fondamentalmente un php class. Non ha nulla a che fare con Magento. Tuttavia, puoi verificare che l'implementazione sia sempre la stessa.

Ecco la classe http://php.net/manual/en/class.ziparchive.php

Ed ecco l'implementazione in Magento2.

Se apri

lib \ internal \ Magento \ Framework \ Archive \ Zip.php lo troverai

public function pack($source, $destination)
    {
        $zip = new \ZipArchive();
        $zip->open($destination, \ZipArchive::CREATE);
        $zip->addFile($source);
        $zip->close();
        return $destination;
    }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.