Почему мой почтовый индекс не работает должным образом? - PullRequest
0 голосов
/ 04 февраля 2010

См. этот вопрос . Я не могу использовать этот код:

function addFolderToZip($dir, $zipArchive, $zipdir = ''){
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {

        //Add the directory
        $zipArchive->addEmptyDir($dir);

        // Loop through all the files
        while (($file = readdir($dh)) !== false) {

            //If it's a folder, run the function again!
            if(!is_file($dir . $file)){
                // Skip parent and root directories
                if( ($file !== ".") && ($file !== "..")){
                    addFolderToZip($dir . $file . "/", $zipArchive, $zipdir . $file . "/");
                }

            }else{
                // Add the files
                $zipArchive->addFile($dir . $file, $zipdir . $file);

            }
        }
    }

Пожалуйста, напишите пример для меня. Вторая проблема слишком сложна.

Когда я использую функцию addfile, она добавится и появится в архиве в виде файла, и это здорово. Теперь, когда я использую:

$z = new ZipArchive();
$z->open('test.zip')

for ($i=0; $i< $z->numFiles;$i++) {
 $aZipDtls = $z->statIndex($i);

echo $aZipDtls['name'];
}

теперь показывает, добавляю ли я файл в папку следующим образом:

    $zip->addFile('/path/to/index.txt', 'dir/newname.txt');

он показывает в программном обеспечении Winrar каталог, а затем файл, но в коде он показывает его как один файл.

Как в winrar:

dir/

dir/newname.txt

В моей системе PHP, просто покажите только один файл без dir, например:

dir/newname.txt

Это означает, что невозможно добавить новый файл в каталог.

1 Ответ

1 голос
/ 04 февраля 2010

Сложно понять, чего ты хочешь, но здесь идет речь:

<?php
$zip = new ZipArchive();
$zip->open('test.zip');
$zip->addFile('/path/to/newname.txt','dir/newname1.txt');
$zip->addFile('/path/to/newname.txt','dir/newname2.txt');
$zip->addFile('/path/to/newname.txt','dir/dir/newname3.txt');
$zip->addFile('/path/to/newname.txt','dir/dir/dir/newname4.txt');

for ($i=0; $i< $zip->numFiles;++$i) {
    $aZipDtls = $zip->statIndex($i);
    echo $aZipDtls['name'],"\n";
}

$zip->close();
?>

Должен охватывать все вопросы. Это распакует с той структурой, которую вы ожидаете. Расхождение, вероятно, связано с тем, как WinRar отображает структуру архива.

...