Xem bài viết Cách Tạo File ZIP với PHP

Cách Tạo File ZIP với PHP

Jul 25, 2012Php & MySQL

1. Cấu trúc thư mục

Phần này mình chỉ cần tạo 1 file chạy chính index.php, 1 folder mang tên /files để chứa các tập tin muốn download và các icon thể hiện loại file download.
Cách tạo file Zip với php - 01 - 2cwebvn
 Và đây là các file nằm trong folder /files :
Cách tạo file Zip với php - 02 - 2cwebvn

2. HTML

Phần HTML mình tạo ra danh sách các thể loại file được chọn như jpg, png, docx và pdf, bạn có thể đưa vào nhiều định dạng file hơn. Trong phần này các bạn chú ý đến giá trị name trong mỗi checkbox, là nó có cùng tên là "files[]", mình sẽ lưu chúng thành 1 mảng. Và phần giá trị value của chúng, các giá trị này phải tồn tại trong folder /files.

Cách tạo file Zip với PHP - 2Cwebvn

*Kiểu FileTên File
<img src="files/pdf.png" title="pdf" width="16" height="16">2cwebvn.pdf
<img src="files/doc.png" title="Document" width="16" height="16">webnguyen.docx
<img src="files/image.png" title="Image" width="16" height="16">hoang-hon.jpg
<img src="files/image.png" title="Image" width="16" height="16">dong-vat.png
 

2. CSS

Thêm một chút CSS định dạng cho dễ nhìn nhé:
*{margin:0px; padding:0px;}
body {background: url(bg_2cwebvn.png);}
h1{margin:50px 0px 30px;color:#DB2E66;}
p.error{
	border:#C10000 1px solid; 
	background-color:#FFA8A8; 
	color:#B00000;padding:8px; 
	width:588px; 
	margin:0 auto 10px;
}
table.tbl{
	border-collapse:collapse; 
	border:#ccc 1px solid;
}
input.btcreate, input.btreset{
	border:0px; 
	background-color:#DB2E66; 
	color:#FFF; padding:10px; 
	cursor:pointer; font-weight:bold; 
	border-radius:5px;
}
input.btreset{
	background-color:#D3D3D3; 
	color:#000; 
}
Giờ chúng ta cùng xem kết quả của phần này nhé.
Cách tạo file Zip với php - 03 - 2cwebvn

3. PHP

Phần code php này mình sẽ viết ở trên đầu của file index.php nhé. Trong phần code này mình đã chú thích hết cho các bạn rồi, cũng dễ hiểu thôi, nếu có thắc mắc gì các bạn cứ comment bên dưới nhé, mình sẽ cố gắng trả lời.
	//Nếu có error thì sẽ bỏ vào biến error này
	$error = "";		
	
	if(isset($_POST['createpdf'])){
		$post = $_POST;		
		$file_folder = "files/";	// Thư mục để tải file lên file zip
		if(extension_loaded('zip')){	// Kiểm tra phần mở rộng zip
		
			// Kiểm tra file được check và số lượng được check phải lớn hơn 0
			if(isset($post['files']) and count($post['files']) > 0){	
				$zip = new ZipArchive();	 	// Load thư viện Zip
				$zip_name = '2cwebvn_' . time().".zip";			// Tên file zip
				if($zip->open($zip_name, ZIPARCHIVE::CREATE)!==TRUE){		// Mở file zip để load các file vào
					$error .=  "* Tạo file zip không thành công trong thời điểm này, i'm sorry.!";
				}
				
				// Duyệt qua các file được checked và add vào file zip
				foreach($post['files'] as $file){				
					$zip->addFile($file_folder.$file);		
				}
				$zip->close();       // Đóng file zip lại
				
				// Kiểm tra file tồn tại thì tải file zip vế máy
				if(file_exists($zip_name)){     
					
					header('Content-type: application/zip');
					header('Content-Disposition: attachment; filename="'.$zip_name.'"');
					readfile($zip_name);
					
					unlink($zip_name); // Xóa file zip được lưu trong đường dẫn tạm
				}
				
			}else
				$error .= "* Xin bạn hãy chọn file cần zip. ";
		}else
			$error .= "* Bạn không có phần mở rộng zip.";
	}
Và nhớ thêm 1 phần báo lỗi nữa ở sau thẻ form, trước thẻ table nhé, đơn giản chỉ hiện thông báo lỗi thôi:
	
	if(!empty($error)) { 
		echo '

'. $error .'

'; }
Vậy là xong, giờ mình cùng xem màn hình kết quả nào.
Cách tạo file Zip với php - 03 - 2cwebvn
Cách tạo file Zip với php - 04 - 2cwebvn

Kết luận

Bạn có thích bài viết này không? Nếu có hãy giúp mình like bài viết này nhé hoặc bạn có thể chia sẽ bài này đến những người mà bạn nghĩ họ quan tâm, xin cảm ơn!

Mọi ý kiến đóng góp hay thắc mắc bạn có thể gởi về cho chúng tôi qua form bình luận phía dưới. Cám ơn bạn đã ghé thăm web mình và xin chúc bạn thành công!

Nguồn: 2Cweb.vn

 

Leave a Comments