Tạo file Zip bằng PHP

28/02/2014

Việc nén (zip ) file bằng PHP thật ra rất đơn giản, nó cũng giống như là các bạn thực hiện thao tác zip file trên destop vậy. Hôm nay mình sẽ chia sẻ cho các bạn một hàm đơn giản là create_zip, và các bạn sẽ chỉ cần sử dụng lại hàm này mỗi khi cần nén file nào đó.

create-zip-using-php

/* creates a compressed zip file */
function create_zip($files = array(),$destination = '',$overwrite = false) {
	//if the zip file already exists and overwrite is false, return false
	if(file_exists($destination) && !$overwrite) { return false; }
	//vars
	$valid_files = array();
	//if files were passed in...
	if(is_array($files)) {
		//cycle through each file
		foreach($files as $file) {
			//make sure the file exists
			if(file_exists($file)) {
				$valid_files[] = $file;
			}
		}
	}
	//if we have good files...
	if(count($valid_files)) {
		//create the archive
		$zip = new ZipArchive();
		if($zip->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;
	}
}

Và đây là cách sử dụng :

$files_to_zip = array(
	'preload-images/1.jpg',
	'preload-images/2.jpg',
	'preload-images/5.jpg',
	'kwicks/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
//if true, good; if false, zip creation failed
$result = create_zip($files_to_zip,'my-archive.zip');

Hàm mà mình giới thiệu cho các bạn có 2 tham số, tham số thứ nhất có thể là một file, hoặc là một mảng chứa nhiều file. Tham số thứ 2 sẽ là nơi chúng ta điền thông tin tên fize zip cũng như đường dẫn sẽ chứa file zip này. Hàm này sẽ trả về giá trị true nếu như việc nén file thành công, ngược lại sẽ trả về false.

Mình hy vọng với bài viết hôm nay, các bạn sẽ có thêm một kinh nghiệm lập trình php cũng như một hàm php hữu ích để các bạn sử dụng sau này.

Chuyên Mục:

Bài viết được đăng bởi webmaster

Nếu các bạn thấy bài viết hữu ích thì giúp mình Like cái nhé !
  • Tori Tran

    1 kiến thức hữu ích