Thêm thư mục vào zip PHP

Bất cứ khi nào bạn đang làm việc trên Dự án PHP hoặc ứng dụng web. Vì vậy, nhiều lần bạn cần tạo một tệp zip trong các dự án PHP của mình. Hướng dẫn này sẽ chỉ cho bạn cách dễ dàng và đơn giản để tạo tệp zip trong PHP và cũng có thể tải xuống tệp zip

PHP tạo một tệp zip từ thư mục/thư mục. Thông qua hướng dẫn này, bạn sẽ học cách tạo tệp zip từ thư mục/thư mục trong php, hoặc thư mục php zip và các thư mục con, php tạo tệp zip và tải xuống, tệp bổ sung php zip, thư mục zip php exec, tệp csv php zip, lưu trữ zip

Và thay vì tệp php, bạn có thể nén tệp như tệp excel, tệp txt, csv, v.v. từ tập lệnh php đã cho trong zip

Cách tạo và tải xuống tệp Zip từ Thư mục/Thư mục trong PHP

Hãy bắt đầu hướng dẫn tạo một tệp zip đơn giản từ thư mục/thư mục trong các dự án PHP hoặc ứng dụng web

Tạo một chỉ mục. tệp php

Trước hết tạo một chỉ mục. php và cập nhật đoạn mã sau vào chỉ mục của bạn. tập tin php

open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		//add the files
		foreach($valid_files as $file) {
			$zip->addFile($file,$file);
		}
		//debug
		//echo 'The zip archive contains ',$zip->numFiles,' files with a status of ',$zip->status;
		
		//close the zip -- done!
		$zip->close();
		
		//check to make sure the file exists
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}

$files_to_zip = array(
	'D:/xampp/htdocs/phptest.php',
	'D:/xampp/htdocs/index.php',
);

//if success than true. if false, zip creation failed

$result = create_zip($files_to_zip,'my-archive.zip');

?>

Chúng ta đã tạo một hàm trong PHP có tên là create_zip(). Nén và tải tệp hoặc thư mục nào vào zip

Bạn sẽ thấy hàm có tên create_zip() được gọi ở phần cuối cùng của PHP script. Chức năng này nén các tệp và thư mục trong zip. Và nếu bạn muốn thay đổi tên của tệp zip sẽ được tạo và tải xuống, bạn cũng có thể thay đổi tên của nó một cách dễ dàng

GHI CHÚ. - Nơi bạn tạo_zip ($files_to_zip, ‘my-archive. zip'); . zip” là xong, thay vào đó bạn muốn giữ tên nào cũng được

Bây giờ bạn phải vào trình duyệt. Và nhấn vào URL sau

 http://localhost/index.php

Tệp zip chúng tôi đặt tên là “my-archive. zip” đã được chuyển đổi thành zip như vậy sau khi tải xuống. Bạn có thể thấy trong hình ảnh dưới đây

Thêm thư mục vào zip PHP

Phần kết luận

Đó là nó;

ZIP là định dạng tệp thường được sử dụng để lưu trữ các tệp có nén dữ liệu. Khi bạn muốn cho phép người dùng tải xuống nhiều thư mục và tệp cùng lúc từ máy chủ, bạn cần tạo một tệp ZIP khi đang di chuyển. Nó giúp nén các tệp và tạo một kho lưu trữ để tải xuống nhiều tệp cùng một lúc. Tệp ZIP có thể được tạo động bằng PHP và tệp lưu trữ có thể được lưu trên máy chủ từ tập lệnh PHP một cách dễ dàng

Tạo một kho lưu trữ ZIP từ thư mục có thể dễ dàng thực hiện bằng PHP. Lớp ZipArchive trong PHP cung cấp khả năng nén tệp hoặc thư mục ngay lập tức trong tệp ZIP. Bạn có thể lưu trữ đệ quy toàn bộ thư mục vào tệp ZIP bằng PHP. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách tạo tệp ZIP từ một thư mục bằng PHP

Lớp ZipArchiver

Lớp ZipArchiver giúp tạo tệp ZIP từ thư mục (tệp và thư mục con) trên máy chủ bằng PHP ZipArchive

  • zipDir() – Hàm này tạo một Zip của một thư mục theo cách đệ quy bao gồm cả thư mục mẹ
    • $sourcePath – Đường dẫn tương đối của thư mục sẽ được nén
    • $outZipPath – Đường dẫn lưu tệp zip
  • dirToZip() – Đây là chức năng trợ giúp của lớp ZipArchiver bổ sung các tệp và thư mục con trong một thư mục vào tệp zip
Class ZipArchiver {

    /**
     * Zip a folder (including itself).
     *
     * Usage:
     * Folder path that should be zipped.
     *
     * @param $sourcePath string
     * Relative path of directory to be zipped.
     *
     * @param $outZipPath string
     * Path of output zip file.
     *
     */
    public static function zipDir($sourcePath, $outZipPath){
        $pathInfo = pathinfo($sourcePath);
        $parentPath = $pathInfo['dirname'];
        $dirName = $pathInfo['basename'];

        $z = new ZipArchive();
        $z->open($outZipPath, ZipArchive::CREATE);
        $z->addEmptyDir($dirName);
        if($sourcePath == $dirName){
            self::dirToZip($sourcePath, $z, 0);
        }else{
            self::dirToZip($sourcePath, $z, strlen("$parentPath/"));
        }
        $z->close();

        return true;
    }

    /**
     * Add files and sub-directories in a folder to zip file.
     *
     * @param $folder string
     * Folder path that should be zipped.
     *
     * @param $zipFile ZipArchive
     * Zip file where files end up.
     *
     * @param $exclusiveLength int
     * Number of text to be excluded from the file path.
     *
     */
    private static function dirToZip($folder, &$zipFile, $exclusiveLength){
        $handle = opendir($folder);
        while(FALSE !== $f = readdir($handle)){
            // Check for local/parent path or zipping file itself and skip
            if($f != '.' && $f != '..' && $f != basename(__FILE__)){
                $filePath = "$folder/$f";
                // Remove prefix from file path before add to zip
                $localPath = substr($filePath, $exclusiveLength);
                if(is_file($filePath)){
                    $zipFile->addFile($filePath, $localPath);
                }elseif(is_dir($filePath)){
                    // Add sub-directory
                    $zipFile->addEmptyDir($localPath);
                    self::dirToZip($filePath, $zipFile, $exclusiveLength);
                }
            }
        }
        closedir($handle);
    }

}

Tạo tệp ZIP trong PHP

Sử dụng lớp ZipArchiver để lưu trữ tất cả các tệp và thư mục con của thư mục đã cho và tạo tệp ZIP từ tập lệnh trong PHP

  • Bao gồm và khởi tạo lớp ZipArchive
  • Chỉ định đường dẫn của thư mục mà bạn muốn lưu trữ dưới dạng ZIP
  • Chỉ định đường dẫn lưu tệp ZIP trên máy chủ
  • Gọi hàm zipDir() của lớp ZipArchiver để tạo ZIP
// Include and initialize ZipArchive class
require_once 'ZipArchiver.class.php';
$zipper = new ZipArchiver;

// Path of the directory to be zipped
$dirPath = '/path/to/sourceDir';

// Path of output zip file
$zipPath = '/path/to/archive-'.time().'.zip';

// Create zip archive
$zip = $zipper->zipDir($dirPath, $zipPath);

if($zip){
    echo 'ZIP archive created successfully.';
}else{
    echo 'Failed to create ZIP.';
}

Giải nén tệp ZIP bằng PHP

Phần kết luận

Tập lệnh tạo tệp ZIP này rất hữu ích để tạo lưu trữ động trên máy chủ bằng PHP. Chức năng tạo ZIP động có thể được sử dụng cho nhiều mục đích, tải xuống nhiều tệp và thư mục từ máy chủ, giảm mức sử dụng dung lượng máy chủ, sao lưu tệp và thư mục, v.v. Bạn có thể dễ dàng nâng cao chức năng của mã này theo nhu cầu của mình

Bạn có muốn nhận trợ giúp triển khai hay sửa đổi hoặc nâng cao chức năng của tập lệnh này không?

Làm cách nào để nén một thư mục trong php?

Đặt các tệp php cùng với thư mục được nén trong C. \xampp\htdocs(XAMPP được cài đặt trong C. lái xe trong trường hợp này). Trong trình duyệt, nhập https. //máy chủ cục bộ/zip. php làm url và tệp sẽ được nén. Sau đó, một tệp zip mới được tạo có tên là 'tệp'

Làm cách nào để thêm tệp vào zip trong php?

Tạo tệp zip mới và thêm tệp vào bên trong thư mục . $zip ->addFromString( 'demo_folder/new. txt' , 'văn bản sẽ được thêm vào văn bản mới. tệp txt' ); // Tất cả các tệp đã được thêm vào, vì vậy hãy đóng tệp zip.

Làm cách nào để nén tất cả các tệp trong một thư mục trong php?

Bạn có thể Zip toàn bộ thư mục bằng mã bên dưới. // Lấy đường dẫn thực cho thư mục của chúng ta $rootPath = realpath('folder-to-zip'); .