PHP ZipArchive là gì?

PHP5. 6. Sử dụng tùy chọn cấu hình --with-libzip=DIR để sử dụng cài đặt libzip hệ thống. phiên bản libzip 0. 11 là bắt buộc, với 0. 11. 2 hoặc muộn hơn đề nghị

PHP7. 3. Việc xây dựng dựa trên libzip đi kèm không được khuyến khích, nhưng vẫn có thể thực hiện được bằng cách thêm --without-libzip vào cấu hình

Tạo một zip từ một thư mục chứa đầy các tệp có thể được thực hiện bằng PHP bằng cách sử dụng lớp ZipArchive. Thể hiện của lớp này tạo một tay cầm để đọc hoặc ghi tệp vào kho lưu trữ nén

Lớp này bao gồm một số thuộc tính và phương thức để lưu trữ tệp zip

Trong bài viết này, chúng ta sẽ thấy một ví dụ về,

  1. Cách tạo tệp lưu trữ zip
  2. Cách tải xuống tệp nén zip

Nếu bạn muốn biết cách nén nhiều hơn một hình ảnh trong nén hình ảnh PHP, hãy tham khảo bài viết trước đó

Cách tạo tệp lưu trữ zip

Tệp này phân tích cú pháp thư mục đầu vào và nén các tệp của nó thành tệp zip. Nó tiến hành các bước sau để tạo tệp zip của một thư mục

  1. Tạo một thể hiện lớp ZipArchive PHP
  2. Mở kho lưu trữ tệp zip với ví dụ. Nó chấp nhận tên tệp zip đầu ra và chế độ mở kho lưu trữ
  3. Áp dụng phân tích cú pháp đệ quy trong thư mục đầu vào
  4. Nếu thư mục bao gồm một tệp thì tệp đó sẽ thêm vào kho lưu trữ zip bằng cách sử dụng addFile[]

Nó xử lý các trường hợp sử dụng có khả năng không thể đọc hoặc lưu trữ thư mục. Khi zip được tạo, nó sẽ hiển thị một thông báo cho trình duyệt

tạo-zip-tệp. php

open[$zipFile, ZipArchive::CREATE] !== TRUE] {
    exit["Unable to open file."];
}
$folder = 'example-folder/';
createZip[$zipArchive, $folder];
$zipArchive->close[];
echo 'Zip file created.';

function createZip[$zipArchive, $folder]
{
    if [is_dir[$folder]] {
        if [$f = opendir[$folder]] {
            while [[$file = readdir[$f]] !== false] {
                if [is_file[$folder . $file]] {
                    if [$file != '' && $file != '.' && $file != '..'] {
                        $zipArchive->addFile[$folder . $file];
                    }
                } else {
                    if [is_dir[$folder . $file]] {
                        if [$file != '' && $file != '.' && $file != '..'] {
                            $zipArchive->addEmptyDir[$folder . $file];
                            $folder = $folder . $file . '/';
                            createZip[$zipArchive, $folder];
                        }
                    }
                }
            }
            closedir[$f];
        } else {
            exit["Unable to open directory " . $folder];
        }
    } else {
        exit[$folder . " is not a directory."];
    }
}
?>

đầu ra

//If succeeded it returns 
Zip file created.

//If failed it returns 
Unable to open directory example-folder.
[or]
"example-folder is not a director.

Create Zip File

Download Zip File

Một số phương thức của lớp ZipArchive trong PHP

Chúng ta có thể thực hiện nhiều thao tác hơn bằng cách sử dụng các phương thức và thuộc tính của lớp PHP ZipArchive. Danh sách các phương thức này được cung cấp bởi lớp PHP này

  1. count[] – được sử dụng để lấy số lượng tệp trong tệp lưu trữ zip
  2. extractTo[] – trích xuất nội dung lưu trữ
  3. renameIndex[] – đổi tên một mục lưu trữ cụ thể theo chỉ mục
  4. replaceFile[] – thay thế tệp trong kho lưu trữ zip bằng tệp mới bằng cách chỉ định đường dẫn mới

Các phương thức ZipArchive được sử dụng trong ví dụ này

Một số phương pháp được sử dụng trong ví dụ này được liệt kê dưới đây. Đây là những phương thức thường được sử dụng của lớp này để làm việc với điều này

Zip là một định dạng nén dữ liệu rất phổ biến và phổ biến nhất. Hầu hết các tệp được gửi và nhận ở định dạng zip. Đây là một định dạng rất hữu ích để kết hợp và nén nhiều tệp lại với nhau. Trong PHP rất dễ làm việc với các tệp zip. PHP cung cấp các chức năng cho tất cả các hoạt động phổ biến trên các tệp zip như tạo kho lưu trữ zip, thêm tệp vào kho lưu trữ, xem nội dung của kho lưu trữ và trích xuất nội dung của nó. Bài viết này là một minh chứng đơn giản về khả năng nén trong PHP

Sử dụng lớp ZipArchive

Trong bài viết này, chúng ta sẽ khám phá các thao tác phổ biến trên các tệp zip được hỗ trợ trong PHP bằng cách sử dụng lớp ZipArchive. Phiên bản ZipArchive đại diện cho một tệp được nén ở định dạng zip

Sau đây là một số hoạt động zip được hỗ trợ bởi PHP,

Xem tên của các mục trong tệp zip

Để xem tên của các mục trong tệp zip, trước tiên chúng ta cần tạo một đối tượng của lớp ZipArchive và gọi hàm open[] chuyển tên tệp zip làm tham số. Thuộc tính numFiles có thể được sử dụng để biết số lượng tệp trong kho lưu trữ. Phương thức getNameIndex[] trả về tên của một mục trong tệp zip bằng cách sử dụng chỉ mục của nó

  1. echo "Nội dung của $filename
    ";
  2. $zip = mới Lưu trữ Zip;
  3. if [$zip - > open[$filename]] {
  4. tiếng vang "
      “;
    1.     for [$i = 0; $i  numFiles; $i++] {  
    2. tiếng vang "
    3. ". $zip - > getNameIndex[$i].   
    4. "
    5. “;
    6. }
    7. tiếng vang "
    “;
  5. $zip - > đóng[];
  6. }

Xem nội dung của các tệp trong tệp zip

Để xem các tệp nội dung trong tệp zip, trước tiên chúng ta cần tạo một đối tượng của lớp ZipArchive và gọi hàm open[] chuyển tên tệp zip làm tham số. Có thể sử dụng thuộc tính numFiles để biết số lượng tệp trong kho lưu trữ. Phương thức getNameIndex[] trả về tên của một mục trong tệp zip bằng cách sử dụng chỉ mục của nó. Phương thức getFromIndex[] trả về nội dung tệp bằng cách sử dụng chỉ mục của nó. Mã mẫu sau đây có thể được sử dụng để xem tất cả các tên tệp và nội dung của chúng trong kho lưu trữ zip bằng cách lặp lại trên tất cả các tệp

  1. $zip = mới Lưu trữ Zip;
  2. if [$zip - > open[$filename]] {
  3. tiếng vang "
      “;
    1.     for [$i = 0; $i  numFiles; $i++] {  
    2. tiếng vang "
    3. ". $zip - > getNameIndex[$i].   
    4. "
    5. “;
    6. echo nl2br[$zip - > getFromIndex[$i]].   
    7. "“;
    8. }
    9. tiếng vang "
    “;
  4. $zip - > đóng[];
  5. }

Tạo tệp zip mới hoặc thêm nội dung vào tệp zip hiện có

Bạn có thể tạo kho lưu trữ zip mới bằng ZIPARCHIVE. TẠO tham số trong hàm open[]. Hàm addFile[] có thể được sử dụng để thêm tệp vào kho lưu trữ. Mã sau có thể được sử dụng để tạo kho lưu trữ zip mới hoặc thêm tệp vào kho lưu trữ hiện có

  1. $zipfilename = $_GET["zipfilename"];
  2. $filename = $_GET["filename"];
  3. $zip = mới Lưu trữ Zip;
  4. nếu [$zip - > open[$zipfilename, ZIPARCHIVE. TẠO RA]] {
  5. $zip - > addFile[$filename];
  6. echo "Đã thêm tệp $filename vào zip $zipfilename".   
  7.     "
    ";
  8. $zip - > đóng[];
  9. } khác {
  10. echo "Không thể tạo tệp zip $zipfilename".   
  11.     "
    ";
  12. }

Phần kết luận

Ở cuối bài viết ngắn này, tôi hy vọng mọi người thấy nó hữu ích và có động lực để khám phá thêm nhiều điều mà PHP có thể làm được

Làm cách nào để sử dụng ZipArchive trong PHP?

Mục lục ¶ .
Lưu trữ Zip. addEmptyDir - Thêm một thư mục mới
Lưu trữ Zip. addFile - Thêm tệp vào kho lưu trữ ZIP từ đường dẫn đã cho
Lưu trữ Zip. addFromString - Thêm tệp vào kho lưu trữ ZIP bằng nội dung của nó
Lưu trữ Zip. addGlob - Thêm tệp từ một thư mục theo mẫu toàn cục

Mô-đun zip PHP là gì?

Các hàm tệp Zip PHP được được sử dụng để lưu trữ nhóm tệp hoặc thư mục cùng nhau trong tệp nén . Zip là định dạng tệp lưu trữ được sử dụng để lưu trữ các tệp ở dạng nén.

Làm cách nào để sử dụng ZipArchive trong laravel?

tạo và tải xuống tệp zip bằng cách sử dụng zipArchive trong Laravel 7 .
Tổng quan
Bước 1. Cài đặt Laravel
Bước 2. Tạo tuyến đường
Bước 3. Tạo bộ điều khiển
TạoZipController. php
Bước 4. Tạo tập tin Blade
tạoZip. php
Bước 5. Chạy ứng dụng Laravel của chúng tôi. Chúng ta có thể khởi động máy chủ và chạy ví dụ này bằng lệnh bên dưới

Làm cách nào để giải nén tệp zip trong PHP?

Sự miêu tả. Tạo một đối tượng của lớp ZipArchive và mở một tệp zip đã cho bằng phương thức $zip->open[]. Nếu nó trả về TRUE thì hãy giải nén tệp vào đường dẫn đã chỉ định bằng phương thức extractTo[] bằng cách chuyển địa chỉ đường dẫn làm đối số trong đó

Chủ Đề