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?

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; 
}

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);

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;
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.