我得到了这个工作,但是当我查看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";
}
}
}
答案 0 :(得分:1)
你的问题在于这一行:$zip->addFile($file_folder, $filename);
目前,它将路径作为第一个参数传递给/uploads/
目录。
根据Zip::addFile
documentation,您应该将路径传递给要添加的文件(包括文件和扩展名)。
因此,请更改您的代码以包含文件名(您已将其作为变量$filename
使用,这很方便)。
$zip->addFile($file_folder.$filename, $filename);