Я создаю zip-файл в PHP для загрузки. Я не получаю никаких ошибок с PHP или проверки функции GetStatusString класса zipArchive. Но если я поместил некоторые файлы в архив, тогда, когда я попытаюсь открыть его, я получаю сообщение об ошибке: «сжатая (закодированная) папка недействительна или повреждена». Я проверил все файлы, которые я добавляю, они все хороши. Единственное, о чем я могу думать, это то, что большие файлы вызывают проблемы. Но «большой» файл составляет всего около половины мегабайта, и я не могу найти документацию о размере файла для zipArchive. Любые мысли о других вещах, чтобы попробовать, чтобы я мог отследить эту проблему? Благодарю.
Изменить: я сузил его до одного конкретного файла, который вызывает проблемы. Есть и другие, которые работают как большие, так и большие, поэтому, я думаю, выкинуть эту мысль. Вот примеры файлов, которые работают нормально:
627 Jane.CCD.pdf
712 Example_DrNotes.pdf
625 Jane.Labs2.pdf
Да, в именах файлов есть пробелы … проблема с унаследованным кодом. Вот имя файла, которое не работает:
623 Jane.Labs.pdf
Не похоже, что это может быть проблема с именем файла. Это, в конечном счете, будет через Интернет, но я проверяю фактический файл zip, который он делает на сервере, и именно там я получаю ошибку.
Вот код:
$zip = new ZipArchive(); $zfileName = $GLOBALS["localUploadRoot"] . $zfile; $requests = $this->getRequests(true); foreach ($requests AS $r) { if (file_exists($GLOBALS["localInboundRequests"] . $r["file"])) { $zip->addFile($GLOBALS["localInboundRequests"] . $r["file"], $r["file"]); } } $zip->close();
Изменить 2: Извините, я не могу опубликовать файл. В нем есть личная информация.
Предел для файлов в Zip-файлах составляет 4 гигабайта (размер несжатого файла), если вы не используете zip64, который еще не поддерживается в php. См. http://bugs.php.net/bug.php?id=51353 .
предел zip-файла – 4 ГБ (сжатый файл). если сжатый размер файла будет больше 4 ГБ, то распаковать нельзя. поэтому, лучший способ разделить ваш zip-файл в 4 ГБ.
Из-за естественного ограничения размера файла в размере 4 ГБ (~ 3,6 ГБ, который будет правильным) zip-файлов, этот класс будет генерировать поврежденные файлы с результатом более 4 ГБ. Использование tar.gz является подходящей альтернативой.