Perpustakaan Zip Codeigniter

Hai, saya hanya ingin mencari tahu apakah mungkin menggunakan pustaka Zip codeigniter untuk membuat zip di drive lokal dan kemudian menambahkan file ke dalamnya?

Di bawah ini adalah kodenya

$this->load->library('zip');
if (($handle = fopen($media_file, "r")) !== FALSE) 
        {
            $row = 1;

            while (($data = fgetcsv($handle)) !== FALSE) 
            {
                if($row > 1)
                {
                    $image_name = isset($data[1]) ? $data[1] : null;

                    if(!empty($image_name))
                    {
                        $this->zip->read_file("C:/files/Images/$image_name"); 
                    }   
                }

                $row++;
            }
        }
         $this->zip->download('Media.zip');

Daripada mengunduh zip, saya ingin membuat zip di drive lokal dan hanya menambahkan file ke dalamnya.

Saya akan sangat menghargai jika seseorang dapat membantu saya. Saya mencoba menggunakan php zip tetapi karena alasan yang aneh ia mengabaikan beberapa file.


person user4676307    schedule 26.06.2015    source sumber


Jawaban (1)


contoh - ritsleting saya

/**
 * Created by websky
 */
class myZipper extends ZipArchive{
    protected $dir;
    protected $archive;
    protected $pathsArray;

    /**
     * @param string $dir
     * @param string $name
     */
    public function __construct($dir,$name){
        $this->dir = $dir;
        $this->archive = $name;
        $this->open($this->archive, myZipper::CREATE);
        $this->myScanDir($this->dir);
        $this->addZip();
        $this->getZip();
    }

    /**
     * @param string $dir
     */
    protected function myScanDir($dir){
        $files = scandir($dir);
        unset($files[0], $files[1]);
        foreach ($files as $file) {
            if(is_dir($dir.'/'.$file)){
                $this->myScanDir($dir.'/'.$file);
            }
        else {
                $this->pathsArray[] = array('oldpath' => $dir.'/'.$file, 'newpath'=>  (($this->dir == $dir)? $file : str_replace($this->dir.'/', '', $dir).'/'.$file));
            }
        }
    }

    protected function addZip(){
        foreach($this->pathsArray as $path){
            $this->addFile($path['oldpath'],$path['newpath']);
        }
    }

    public function getZip(){
        $this->close();
        header('Content-Type: application/zip');
        header('Content-disposition: attachment; filename='.$this->archive);
        header('Content-Length: '.filesize($this->archive));
        readfile($this->archive);
        unlink($this->archive);
    }
    }

    $test = new myZipper('C:/files/Images', 'Images.zip');

myZipper(file sumber, nama arsip);

person websky    schedule 26.06.2015