2

我得到了这个工作,但是当我查看 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";
    }

    }
}
4

1 回答 1

1

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

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

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

因此,更改您的代码以包含文件名(您已经将它作为一个$filename方便的变量)。

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

于 2013-10-23T12:04:47.843 回答