Tệp nén PHP

Nén file khi truyền qua internet có rất nhiều ưu điểm. Trong hầu hết các trường hợp, tổng kích thước kết hợp của tất cả các tệp ở định dạng nén sẽ giảm đi một khoảng nhỏ. Điều này có nghĩa là bạn sẽ tiết kiệm được một phần băng thông của mình và người dùng cũng sẽ nhận được tốc độ tải xuống nhanh hơn. Khi người dùng đã tải xuống một tệp, họ có thể giải nén tệp đó bất cứ khi nào họ muốn. Tóm lại, tính năng nén có thể giúp việc cung cấp tệp qua internet dễ dàng hơn rất nhiều cho bạn cũng như khách truy cập của bạn

Một yếu tố có thể khiến bạn không muốn nén tệp hoặc khiến quá trình này trở nên rất mệt mỏi là bạn có thể thực hiện thủ công. May mắn thay, PHP đi kèm với rất nhiều tiện ích mở rộng xử lý cụ thể việc nén và trích xuất tệp. Bạn có thể sử dụng các hàm có sẵn trong các tiện ích mở rộng này để tự động nén file trong PHP

Hướng dẫn này sẽ hướng dẫn bạn cách nén và giải nén [nén và giải nén] các tệp đến và từ kho lưu trữ zip trong PHP. Bạn cũng sẽ học cách xóa hoặc đổi tên tệp trong kho lưu trữ mà không cần giải nén chúng trước

Nén các tệp riêng lẻ trong PHP

Lớp PHP

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
20 có rất nhiều thuộc tính và phương thức có thể giúp bạn nén và giải nén tất cả các tệp của mình

Bạn có thể thêm từng tệp vào kho lưu trữ zip của mình hoặc thêm toàn bộ thư mục cùng một lúc. Trong cả hai trường hợp, bước đầu tiên là tạo một phiên bản

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
20 mới và sau đó gọi phương thức
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
22. Phương pháp này sẽ mở một kho lưu trữ zip mới để đọc, viết hoặc các sửa đổi khác. Có năm giá trị hợp lệ cho tham số
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
23 tùy chọn xác định cách xử lý các tình huống khác nhau

  • $zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
    
    24—Cờ này sẽ ghi đè nội dung trong kho lưu trữ được chỉ định nếu nó đã tồn tại
  • $zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
    
    25—Cờ này sẽ tạo một kho lưu trữ mới nếu nó chưa tồn tại
  • $zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
    
    26—Cờ này sẽ dẫn đến lỗi nếu kho lưu trữ đã tồn tại
  • $zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
    
    27—Cờ này sẽ yêu cầu PHP thực hiện kiểm tra tính nhất quán bổ sung trên kho lưu trữ và đưa ra lỗi nếu chúng không thành công
  • $zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
    
    28—Cờ này đã có sẵn trong PHP 7. 4. 3 và cho phép bạn mở kho lưu trữ ở chế độ chỉ đọc

Bạn có thể kiểm tra tài liệu của phương pháp này để tìm hiểu về các mã lỗi khác nhau được trả về trong trường hợp không mở được tệp. Nếu tệp zip được mở hoặc tạo thành công, phương thức sẽ trả về

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
29

Bạn sẽ phải sử dụng các kết hợp cờ khác nhau trong các tình huống khác nhau để tránh bất kỳ kết quả không mong muốn nào. Ví dụ: sử dụng cờ

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
30 nếu bạn không quan tâm đến nội dung của kho lưu trữ hiện có. Nó sẽ không tạo một kho lưu trữ mới nếu không tồn tại với tên cụ thể đó

Bạn có thể sử dụng kết hợp

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
30 và
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
25 để ghi đè lên một kho lưu trữ hiện có và tạo một kho lưu trữ mới nếu không tồn tại với tên cụ thể đó. Đây là một ví dụ

1
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];

Khi sử dụng cờ

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
25, bạn sẽ nhận thấy rằng nó bắt đầu sửa đổi một kho lưu trữ hiện có nếu một kho lưu trữ đã tồn tại. Đây có thể là điều bạn thực sự muốn làm, nhưng nó cũng có thể gây ra một số hậu quả không mong muốn. Bạn có thể sử dụng kết hợp
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
25 và
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
26 để đảm bảo rằng bạn chỉ đang làm việc với các kho lưu trữ không tồn tại trước đây

1
$zip->open['new_compressed_files.zip', ZipArchive::EXCL|ZipArchive::CREATE];

Khi bạn đã mở kho lưu trữ thành công, bạn có thể sử dụng phương pháp

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
36 để thêm bất kỳ tệp nào từ một đường dẫn nhất định vào kho lưu trữ của mình. Tham số
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
37 là đường dẫn của tệp mà bạn muốn thêm vào kho lưu trữ. Tham số
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
38 được sử dụng để gán tên cho tệp để lưu trữ bên trong kho lưu trữ. Bạn có thể gọi
$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
39 mỗi khi bạn muốn thêm tệp mới vào kho lưu trữ của mình

Sau khi thêm tất cả các tệp cần thiết vào kho lưu trữ, bạn chỉ cần gọi phương thức

$zip->open['my_compressed_files.zip', ZipArchive::OVERWRITE|ZipArchive::CREATE];
40 để đóng và lưu các thay đổi

Giả sử bạn có một trang web cho phép người dùng tải xuống các tệp phông chữ cho các phông chữ khác nhau cùng với thông tin cấp phép để sử dụng chúng. Các tệp như thế này sẽ là ví dụ hoàn hảo về lưu trữ tự động bằng PHP. Đoạn mã sau chỉ cho bạn cách thực hiện chính xác điều đó

1

Chủ Đề