Magento2: Cara menangani file zip

8

Saya harus bisa memperlakukan file zip secara terprogram.

Di magento 1.9 saya melakukan:

$zip = new ZipArchive();

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

Bagaimana saya bisa melakukan hal yang sama di Magento 2?

Alexglvr
sumber

Jawaban:

6

Anda dapat melakukan ini dengan cara yang sama

$zip = new \ZipArchive();

if ($zip->open($Zippath) === TRUE) {
    $zip->addFile($Filepath, $Filename);
    $zip->addFile($Filepath, "toto.txt");
    $zip->close();
    return TRUE; 
}
Priyank
sumber
Saya baru saja menguji dan mendapatkan kesalahan pada $ zip-> close (); : Peringatan: ZipArchive :: close (): Kesalahan baca: Adalah direktori. Untuk $ FilePath saya punya / foo / bar dan $ FileName toto.txt
Alexglvr
Maaf, karena kesalahan ketik ... berfungsi dengan baik. jawab apporved
Alexglvr
8

Sebagai alternatif, Anda dapat menggunakan kelas kerangka kerja Magento dari M2 yang dipanggilMagento\Framework\Archive\Zip dan memanggil pack()metode.

Misalnya, jika Anda menyuntikkan kelas dan menugaskannya ke $zipArchivevariabel yang dapat Anda lakukan:

$this->zipArchive->pack($source, $destination);
Raphael di Digital Pianism
sumber
3

Pada dasarnya a php class. Itu tidak ada hubungannya dengan Magento. Namun Anda bisa mengecek implementasinya masih seperti sama.

Ini adalah kelas http://php.net/manual/en/class.ziparchive.php

Dan inilah implementasinya di Magento2.

Jika kamu membuka

lib \ internal \ Magento \ Framework \ Archive \ Zip.php Anda akan menemukan ini

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