Intereting Posts
Браузер: Cookie потерян при обновлении Как вы разрешаете клиентам регистрироваться на вашем сайте с помощью своей учетной записи Google? Приложение PhalconPHP MVC Micro: укажите путь запроса и верните код ответа Mysql Повторение значения столбца Limit N раз PHP XSS Вопрос / Уточнение Сортировка массива по имени в PHP Как проверить, содержит ли массив пустые элементы? Несколько данных запроса в единую таблицу HTML (PHP, MySQL) php, как определить идентификатор сеанса мертв или жив? Загрузка больших объектов Unity3d MYSQL Mysqli Подготовить заявление – Возвращение ложно, но почему? Преобразование массива PHP в входы HTML-формы – это дублирование элементов Почему я получаю «POST http: //54.xx.xx.xx/wp-admin/admin-ajax.php 500 (Internal Server Error)» при использовании WordPress + Ajax? Красноречивый много-ко-многим-как легко переносить дистанционные отношения Laravel 4 Validation – Вложенные индексированные массивы?

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

Это ошибка im get, однако файл существует, и если я использую 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 Итак, я думаю, что ive сузило его до этого бита кода или скрипта загрузки, который я использую для загрузки .zip-файла из системы, если я оставлю zip в системе и использую тот же самый бит кода, который он работает хорошо.

Вот мой код загрузки, возможно, ive пропустил что-то на этом, что вызывает проблему.

  $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(); 

Откройте архив с текстовым или шестнадцатеричным редактором и убедитесь, что у вас есть подпись «PK» в начале файла. Если у вас есть HTML до этой подписи, это предполагает, что ваши буферы не очищаются или не очищаются, если они не должны быть, что означает, что PHP ZipArchive будет считать недопустимый архив.

Это был файл download.php, который вызывал проблему, вот решение. который должен был сделать OB CLEAN, а не Flush

  ///echo "<div style='padding: 50px;'>Please Wait .....</div>"; $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(); ob_end_clean(); readfile($zipFile); exit; die();