为什么我的邮政编码不能按预期工作?

发布于 2024-08-20 09:03:29 字数 1511 浏览 7 评论 0原文

请参阅此问题。我无法使用该代码:

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/newname.txt

这意味着不可能在目录中添加新文件。

See this question. I can't use that code:

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

            }
        }
    }

Please write an example for me. The second problem is too complex.

When I use addfile function it will add and appear in the archive as a file and this great. Now when I use:

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

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

echo $aZipDtls['name'];
}

it now shows if I add a file in folder like that:

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

it show in the Winrar soft a dir then a file but in the code it shows it as one file.

Like that in winrar:

dir/

dir/newname.txt

In my PHP system, just only show one file without its dir, like that:

dir/newname.txt

This mean it's impossible to add a new file in a dir.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(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 显示压缩文件结构的方式造成的。

Difficult to know what you want, but here goes:

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

Should cover all questions. That will unzip with exactly the structure you'd expect it to. The discrepancy is likely due to the way WinRar displays the archive structure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文