Magento2: Umgang mit Zip-Dateien

8

Ich muss in der Lage sein, Zip-Dateien programmgesteuert zu behandeln.

In Magento 1.9 habe ich gemacht:

$zip = new ZipArchive();

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

Wie kann ich dasselbe in Magento 2 tun?

Alexglvr
quelle

Antworten:

6

Sie können dies auf die gleiche Weise tun

$zip = new \ZipArchive();

if ($zip->open($Zippath) === TRUE) {
    $zip->addFile($Filepath, $Filename);
    $zip->addFile($Filepath, "toto.txt");
    $zip->close();
    return TRUE; 
}
Priyank
quelle
Ich habe gerade getestet und erhalte eine Fehlermeldung bei $ zip-> close (); : Warnung: ZipArchive :: close (): Lesefehler: Ist ein Verzeichnis. Für $ FilePath habe ich / foo / bar und $ FileName toto.txt
Alexglvr
Entschuldigung, war aufgrund eines Tippfehlers ... funktioniert gut. Antwort genehmigt
Alexglvr
8

Alternativ können Sie die aufgerufene Magento-Framework-Klasse von M2 verwendenMagento\Framework\Archive\Zip und die pack()Methode aufrufen .

Wenn Sie beispielsweise die Klasse injiziert und der $zipArchiveVariablen zugewiesen haben, können Sie Folgendes tun:

$this->zipArchive->pack($source, $destination);
Raphael beim digitalen Pianismus
quelle
3

Es ist im Grunde ein php class. Es hat nichts mit Magento zu tun. Sie können jedoch überprüfen, ob die Implementierung immer noch dieselbe ist.

Hier ist die Klasse http://php.net/manual/en/class.ziparchive.php

Und hier ist die Implementierung in Magento2.

Wenn Sie öffnen

lib \ internal \ Magento \ Framework \ Archive \ Zip.php finden Sie hier

public function pack($source, $destination)
    {
        $zip = new \ZipArchive();
        $zip->open($destination, \ZipArchive::CREATE);
        $zip->addFile($source);
        $zip->close();
        return $destination;
    }
Kingshuk Deb
quelle