可以';t创建zip文件(php)


Can't create zip file (php)

所以我在互联网上找到了这个可以将文件放入zip的类。我有一个表格,可以将图片上传到文件夹中,然后我试图循环到这些文件中,并将它们存储到zip文件中,但似乎在某个地方失败了。

拉链级

<?php
class zipper {
    private $_files = array(),
            $_zip;
    public function __construct() {
        $this->_zip = new ZipArchive;
    }

    public function add($input){
        if(is_array($input)){
            $this->_files = array_merge($this->_files, $input);
        }else{
            $this->_files[] = $input;
        }
    }
        public function store($location = null){
            if(count($this->_files) && $location){
                foreach ($this->_files as $index => $file) {
                    if(!file_exists($file)){
                        unset($this->_files[$index]);
                    }
                    print_r($file . "<br>");// here gives me the exact path of the files.
                }
                if($this->_zip->open($location, file_exists($location) ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE)){
                    foreach ($this->_files as $file) {
                        $this->_zip->addFile($file, $file);
                    }
                    $this->_zip->close();
                }
            }
        }
}

这是我上传的文件

> $uniqUser = uniqid(strtoupper($userName). "-" , true); 
> $directory ='../upload/';  
> $file_name is $files['name']
if(!is_dir("../upload/". $uniqUser ."/")) {
                    mkdir("../upload/". $uniqUser ."/");
                }

                if(move_uploaded_file($file_tmp, $directory .  $uniqUser . "/" . $file_name)){
                    $uploaded[$position] = $directory . $uniqUser . "/" . $file_name;
                        $zipper = new zipper;
                        $zipper->add(BASE_URL . "/upload/" . $uniqUser . "/" . $file_name);
                        $zipper->store(BASE_URL . "/upload/" . $uniqUser . ".zip");

最后一个代码位于foreach中,foreach循环到上载的文件中。

我不知道为什么我最后创建档案失败了。。。

将这些新创建的文件夹转换成zip或将其添加到zip中可能是一种简单的方法吗?

第一个问题是因为我添加了BASE_URL,所以我必须编写../upload/。第二个问题有点愚蠢。。。为了不必要的重复,我不得不在foreach $zipper = new zipper;和$zipper-store("../upload/" . $uniqUser . ".zip");之外创建类(在底部添加)。