ZipArchive не открывается файл - Код ошибки: 19
У меня проблемы с тем, что мой код может открыть zip-файл, который я загрузил и переместил в папку, zip-файл загружается нормально, однако вы можете открыть его в любой программе Zip, когда я пытаюсь открыть его с помощью ZipArchive, чтобы извлечь данные это ошибки.
$path = "../"; // Upload directory
$count = 0;
foreach ($_FILES['files']['name'] as $f => $name) {
if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path . $name))
$count++; // Number of successfully uploaded file
}
$kioskFile = $_FILES['files']['name'][0];
$kioskFile = explode(".", $kioskFile);
$kioskFile = $kioskFile[0];
$zipFile = "../" . $kioskFile . ".zip";
$zip = new ZipArchive;
$res = $zip->open($zipFile);
if ($res === true) {
$zip->extractTo("./");
$zip->close();
} else {
echo "Error Cannot Open Zip File - Error Code: ";
}
Когда я запускаю код, он показывает мне код ошибки 19
ZIPARCHIVE :: ER_NOZIP - 19
Это ошибка, которую я получаю, однако файл существует, и если я использую zip_open, он возвращает, что он может открыть файл zip.
Любая помощь будет очень благодарна
EDIT1 Если я загружаю zip-файл, который я создаю вручную (используя zip-программу), то загрузка работает нормально. Однако, если я использую ZipArchive, созданный zip-файл, то он сразу выдает ошибку с ошибкой 19.
EDIT2 Теперь я добавил проверку, чтобы убедиться, что файл существует в правильном каталоге, а также поместил отпечаток местоположения, оба совпадают, но все же проблема та же. Ошибка 19
$path = "../"; // Upload directory
$count = 0;
foreach ($_FILES['files']['name'] as $f => $name) {
if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path . $name))
$count++; // Number of successfully uploaded file
}
$kioskFile = $_FILES['files']['name'][0];
$kioskFile = explode(".", $kioskFile);
$kioskFile = $kioskFile[0];
$realpath = realpath("../");
$zipFile = $realpath . "\\" . $kioskFile . ".zip";
if (file_exists($zipFile)) {
$extract = zip_extract($zipFile, "../");
if ($extract === TRUE) {
} else {
echo "The file " . $zipFile . " cannot be opened";
}
} else {
echo "The file " . $zipFile . " does not exist";
die();
}
Update1 Поэтому я думаю, что я сузил его до этого фрагмента кода или сценария загрузки, который я использую для загрузки файла .zip из системы, если я оставляю zip-файл в системе и использую тот же самый фрагмент кода, он работает нормально. ,
Вот мой код загрузки, может быть, я что-то упустил по этому поводу, что вызывает проблему.
$fileID = $_GET['id'];
$backupLoc = "backups/";
$sql = "SELECT * FROM backups WHERE id = '" . addslashes($fileID) . "' LIMIT 1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$backupFile = $row['backupFile'];
$zipFile = $backupLoc . "/" . $backupFile . ".zip";
$zipSize = filesize($zipFile);
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="' . basename($zipFile). '"');
ob_end_flush();
readfile($zipFile);
exit;
die();