Magento2: Cách xử lý tệp zip


8

Tôi cần có khả năng xử lý các tệp zip theo chương trình.

Trong magento 1.9 tôi đã làm:

$zip = new ZipArchive();

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

Làm thế nào tôi có thể làm tương tự trong magento 2?

Câu trả lời:


6

Bạn có thể làm điều này theo cách tương tự

$zip = new \ZipArchive();

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

Tôi vừa kiểm tra và gặp lỗi trên $ zip-> close (); : Cảnh báo: ZipArchive :: close (): Lỗi đọc: Là một thư mục. Với $ FilePath, tôi có / foo / bar và $ FileName toto.txt
— Alexglvr

Xin lỗi, là do lỗi đánh máy ... hoạt động tốt. câu trả lời được chấp nhận
— Alexglvr

8

Alternativaly bạn có thể sử dụng lớp khung Magento của M2 được gọiMagento\Framework\Archive\Zip và gọi pack()phương thức.

Ví dụ, nếu bạn đã chèn lớp và gán nó cho $zipArchivebiến bạn có thể làm:

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

3

Về cơ bản nó a php class. Nó không có gì để làm với Magento. Tuy nhiên bạn có thể kiểm tra việc thực hiện vẫn như vậy.

Đây là lớp http://php.net/manual/en/ class.ziparchive.php

Và đây là cách triển khai trong Magento2.

Nếu bạn mở

lib \ Internal \ Magento \ Framework \ Archive \ Zip.php bạn sẽ tìm thấy cái này

public function pack($source, $destination)
    {
        $zip = new \ZipArchive();
        $zip->open($destination, \ZipArchive::CREATE);
        $zip->addFile($source);
        $zip->close();
        return $destination;
    }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.