Nén file sang định dạng .ZIP bằng PHP

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 đó.

nén file, file .zip, nén trong 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.

 

 HỖ TRỢ TRỰC TUYẾN