Я создаю файл для извлечения zip-файлов. Отрезанный код проверяет, является ли расширение файла .zip, а затем, существует ли файл уже. Если нет, распакуйте архив.
if($fileExtension == "zip")
{
if(is_dir("unzips/".$fileName) == false)
{
move_uploaded_file($_FILES["file"]["tmp_name"],"temp/".$_FILES["file"]["name"]);
$zip = new ZipArchive();
$zip -> open("temp/".$_FILES["file"]["name"]);
for($num = 0; $num < $zip->numFiles; $num++)
{
$fileInfo = $zip->statIndex($num);
echo "Successfully Extracted: ".$fileInfo["name"];
$zip->extractTo("unzips/".$fileName);
echo "<br />";
}
zip_close($zip);
unlink("temp/".$_FILES["file"]["name"]);
}
else
{
echo $fileName." The ZIP archive file has already been unzipped";
}
}
else
{
echo "Only .zip files are allowed";
}
Вот полный код для index.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Unzipping Zip File</title>
</head>
<body>
<form action="index.php" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><input type="submit" name="submit" value="Extract">
</form>
<?php
if(isset($_POST['submit']))
{
$array = explode(".",$_FILES["file"]["name"]);
$fileName = $array[0];
$fileExtension = strtolower(end($array));
if($fileExtension == "zip")
{
if(is_dir("unzips/".$fileName) == false)
{
move_uploaded_file($_FILES["file"]["tmp_name"],"temp/".$_FILES["file"]["name"]);
$zip = new ZipArchive();
$zip -> open("temp/".$_FILES["file"]["name"]);
for($num = 0; $num < $zip->numFiles; $num++)
{
$fileInfo = $zip->statIndex($num);
echo "Successfully Extracted: ".$fileInfo["name"];
$zip->extractTo("unzips/".$fileName);
echo "<br />";
}
$zip -> close();
unlink("temp/".$_FILES["file"]["name"]);
}
else
{
echo $fileName." The ZIP archive file has already been unzipped";
}
}
else
{
echo "Only .zip files are allowed";
}
}
?>
<br />
<p id="end note">Please return to main menu and download individually extracted files.</p>
</body>
</html>
структура каталогов выглядит так: D:/MyWebs/extracting/index.php D:/MyWebs/extracting/unzips (конечный пункт назначения, который содержит распакованную папку) D:/MyWebs/extracting/temp (сохраняет zip, а затем удаляет их)
$fileName
(когда вы получаете его как$fileName = $array[0];
, вам не хватает расширения). поэтому открытие zip-файла не удастся. Смотрите мой обновленный ответ. - person Nimeshka Srimal   schedule 11.07.2018