Этот код работает отлично. Но пароль не установлен для файла .zip. Я не знаю почему. При сохранении файла его идеально сохранить в zip-файл, но пароль для этого файла не установлен. Я думаю, что некоторые ошибки в коде.
for ($num = 0; $num < count($fileArray["name"]); $num++) {
$fileName = $fileArray["name"][$num];
$tempName = $fileArray["tmp_name"][$num];
move_uploaded_file($tempName, "tmp/" . $fileName);}
$archiveName = rand(10000, 1000000) . ".zip";
$filesArrayNames = $_FILES["upload_files"]["name"];
$zipDir = scandir("zip/");
$error = false;
foreach ($zipDir as $zipDIrFile) {
if ($zipDIrFile == $archiveName) {
$error = true;
break;
}
}
if ($error == false) {
$tmpDir = scandir("tmp/");
$zip = new ZipArchive();
$zip->open("zip/" . $archiveName, ZipArchive::CREATE);
$zip->setPassword($password);
for ($num = 0; $num < count($fileArray["name"]); $num++) {
$fileName = $fileArray["name"][$num];
$zip->setEncryptionName($fileArray["name"][$num], ZipArchive::EM_AES_256);
foreach ($tmpDir as $tmpDirFile){
if($tmpDirFile == $fileName){
$zip->addFile("tmp/".$fileName);
// echo 'Adding'.$fileName."<br />";
echo $password;
}
}
}
$zip->close();
for ($num = 0; $num < count($fileArray["name"]); $num++) {
$fileName = $fileArray["name"][$num];
foreach ($tmpDir as $tmpDirFile){
if($tmpDirFile == $fileName){
unlink("tmp/".$fileName);
}
}
}
} else {
echo 'Name already exists';
}
}