为什么我的邮政编码无法按预期工作?

时间:2010-02-04 07:49:14

标签: php file zip

this question。我无法使用该代码:

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中显示一个dir然后是一个文件但在代码中它将它显示为一个文件。

与winrar中的相似:

dir/

dir/newname.txt

在我的PHP系统中,只显示一个没有dir的文件,如:

dir/newname.txt

这意味着在dir中添加新文件是不可能的。

1 个答案:

答案 0 :(得分:1)

很难知道你想要什么,但这里有:

<?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显示归档结构的方式。