Snack's 1967

ChiaSeIT.Mobie.In

Upload và giải nén file zip ngay trên web server với PHP

Hôm nay mình sẽ cùng với các bạn viết một ứng dụng nhỏ bằng PHP, trong ứng dụng này, chúng ta sẽ tạo một chức năng upload file zip, và file zip này sẽ tự động được giải nén ngay khi nó được up lên web server. Khi file zip được upload lên , chương trình sẽ tự động tạo một folder cùng tên với file zip và rồi nó sẽ đếm số lượng files và folder có trong file zip ,sau đó giải nén tất cả vào ngay bên trong folder mới vừa tạo này.



Khi thực hiện ứng dụng này, các bạn phải đảm bảo rằng web server mà các bạn đang dùng có kích hoạt ZiP Library, nếu không thì các bạn có thể liên hệ với nhà cung cấp dịch hosting của mình để nhờ họ bật tính năng này lên.
Đầu tiên , chúng ta sẽ cần có một form upload file zip như sau :

<div class="box">
<div class="heading">Upload File and Unzip</div>
<div class="form_field">
<form enctype="multipart/form-data" method="post" action="upload.php">
<label>Upload Zip File: </label> <input type="file" name="zip_file">
<br><br>
<input type="submit" name="submit" value="Upload" class="upload"> <br /><br />
</form>
</div>
</div>


Bây giờ các bạn tạo file mới và đặt tên là upload.php, sau đó copy toàn bộ đoạn code bên dưới vào file này :

<?php
function recursive_dir($dir) {
foreach(scandir($dir) as $file) {
if ('.' === $file || '..' === $file) continue;
if (is_dir("$dir/$file")) recursive_dir("$dir/$file");
else unlink("$dir/$file");
}
rmdir($dir);
}

if($_FILES["zip_file"]["name"]) {
$filename = $_FILES["zip_file"]["name"];
$source = $_FILES["zip_file"]["tmp_name"];
$type = $_FILES["zip_file"]["type"];

$name = explode(".", $filename);
$accepted_types = array('application/zip', 'application/x-zip-compressed',
'multipart/x-zip', 'application/x-compressed');
foreach($accepted_types as $mime_type) {
if($mime_type == $type) {
$okay = true;
break;
}
}
// kiem tra xem file upload len co phai la file zip khong
$continue = strtolower($name[1]) == 'zip' ? true : false;
if(!$continue) {
$myMsg = "Please upload a valid .zip file.";
}

/* PHP current path */
$path = dirname(__FILE__).'/';
$filenoext = basename ($filename, '.zip');
$filenoext = basename ($filenoext, '.ZIP');

$myDir = $path . $filenoext; // target directory
$myFile = $path . $filename; // target zip file

if (is_dir($myDir)) recursive_dir ( $myDir);
mkdir($myDir, 0777);

if(move_uploaded_file($source, $myFile)) {
$zip = new ZipArchive();
$x = $zip->open($myFile); // open the zip file to extract
if ($x === true) {
$zip->extractTo($myDir); // place in the directory with same name
$zip->close();
unlink($myFile);
}
echo $myMsg = "Your .zip file uploaded and unziped.";
} else {
echo $myMsg = "There was a problem with the upload.";
}
}
?>


Mình hy vọng các bạn sẽ thấy thích với ứng dụng đơn giản này, mong rằng qua bài viết này, các bạn có thể tích lũy thêm kinh nghiệm trong lĩnh vực lập trình nói chung và ngôn ngữ PHP nói riêng.

Bình luận
Từ Khóa
Upload và giải nén file zip ngay trên web server với PHP , Hôm, nay, mình, sẽ, cùng, với, các, bạn, viết, một, ứng, dụng, nhỏ, bằng, PHP,, , Tìm hiểu Upload và giải nén file zip ngay trên web server với PHP làm theo và học hỏi , Bài viết Hot Upload và giải nén file zip ngay trên web server với PHP ,
Cùng Chuyên Mục
Share code PHP game tìm Boom
Hiển thị số lượng Facebook likes / Shares / Comments với PHP
Hàm giải nén file Zip bằng PHP
Hàm tạo file Zip bằng PHP
Tự tay làm Tags Cloud cho trang web của bạn bằng PHP
Share code PHP phát hiện Địa chỉ người dùng
Share code Get Link xem Video max BW Onbox.vn
Share code PHP tạo Bộ đếm cho Website của bạn
Share code tìm kiếm trong Database
Share code PHP tạo Captcha dạng toán từng bước đơn giản
Chia sẻ coding miễn phí © 2017
Thiết kế: Mạnh Tuân

sitemap.xml robots.txt U-ONC-STAT