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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.