php zip存档正在添加没有大小的文件

时间:2013-10-23 10:16:32

标签: php upload ziparchive

我得到了这个工作,但是当我查看zip文件夹时,所有文件大小都是0.我尝试不将文件添加到zip并且工作正常,但是当我尝试将它们添加到zip时,大小变为0这是为什么。

这是我的php

if(isset($_FILES['file'])){

    $file_folder = "uploads/";

    $zip = new ZipArchive();
    $zip_name = time().".zip";
    $open = $zip->open("zip/".$zip_name, ZipArchive::CREATE);

    if($open === true){
        for($i = 0; $i < count($_FILES['file']['name']); $i++)
        {
        $filename = $_FILES['file']['name'][$i];
        $tmpname = $_FILES['file']['tmp_name'][$i];

        move_uploaded_file($tmpname, "uploads/".$filename);

        $zip->addFile($file_folder, $filename);
        }
    $zip->close();

    if(file_exists("zip/".$zip_name)){
    // zip is in there, delete the temp files
    echo "Works";
    for($i = 0; $i < count($_FILES['file']['name']); $i++)
    {
        $filenameu = $_FILES['file']['name'][$i];
        unlink("uploads/".$filenameu);
    }
    } else {
        // zip not created, give error
        echo "something went wrong, try again";
    }

    }
}

1 个答案:

答案 0 :(得分:1)

你的问题在于这一行:$zip->addFile($file_folder, $filename);

目前,它将路径作为第一个参数传递给/uploads/目录。

根据Zip::addFile documentation,您应该将路径传递给要添加的文件(包括文件和扩展名)。

因此,请更改您的代码以包含文件名(您已将其作为变量$filename使用,这很方便)。

$zip->addFile($file_folder.$filename, $filename);