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で同じことをするにはどうすればよいですか?

回答:


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

申し訳ありませんが、入力ミスが原因でした...正常に機能しています。承認された回答
Alexglvr

8

または、呼び出されたM2のMagentoフレームワーククラスを使用してMagento\Framework\Archive\Zippack()メソッドを呼び出すことができます

たとえば、クラスを注入してそれを$zipArchive変数に割り当てた場合、次のことができます。

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

3

基本的にはphp class。Magentoとは関係ありません。ただし、実装はまだ同じように確認できます。

ここにクラスhttp://php.net/manual/en/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;
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.