Magento2:如何处理zip文件


8

我需要能够以编程方式处理zip文件。

在magento 1.9中,我正在做:

$zip = new ZipArchive();

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

我如何在magento 2中做同样的事情?

Answers:


6

您可以用相同的方法

$zip = new \ZipArchive();

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

我刚刚测试过并在$ zip-> close()上收到错误;:警告:ZipArchive :: close():读取错误:是目录。对于$ FilePath,我有/ foo / bar和$ FileName toto.txt
Alexglvr

抱歉,由于输入错误而导致...运作正常。答案
已获批准

8

另外,您可以使用M2的Magento框架类Magento\Framework\Archive\Zip并调用pack()方法。

例如,如果您注入了类并将其分配给$zipArchive变量,则可以执行以下操作:

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

3

它基本上是一个php class。它与Magento无关。但是您可以检查实现是否仍然相同。

这是类http://php.net/manual/zh/class.ziparchive.php

这是Magento2中的实现。

如果你打开

lib \ internal \ Magento \ Framework \ Archive \ Zip.php,您会找到这个

public function pack($source, $destination)
    {
        $zip = new \ZipArchive();
        $zip->open($destination, \ZipArchive::CREATE);
        $zip->addFile($source);
        $zip->close();
        return $destination;
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.