脚本宝典收集整理的这篇文章主要介绍了php – 在压缩文件中没有父文件夹的文件夹中压缩文件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
FolderI Folder1 Folder2 Folder3 .. .. FolderN
现在,将FolderI压缩成zipFile.zip非常简单,因为有很多在线资源,特别是在这里!但是,我想创建zipFile.zip,包含Folder1 … FolderN,这样当文件解压缩时,它会直接用Folder1 … FolderN填充当前目录,而不是创建FolderI,它有Folder1 … FolderN在里面.
我一直在尝试的一些事情是:
$zip = new ZipArchive(); // oPEn archive if ($zip->open('my-archive.zip',ZIPARCHIVE::CREATE) !== TRUE) { die ("Could not open archive"); } // inITialize an iterator // pass it the directory to be PRocessed $iterator = new RecursiveiteratorIterator(new Recursivedirectoryiterator("FolderI/")); // iterate over the directory // add each file found to the archive foreach ($iterator as $key=>$value) { $zip->adDFile(realpath($key),$key) or die ("ERROR: Could not add file: $key"); } // close and save archive $zip->close();
这是从compress/archive folder using php script开始的,我试图改变它.虽然没有工作 – FolderI仍然是压缩的.但是,当我解压缩my-archive.zip时,我得到一个FolderI,然后是Folder1..FolderN.我也在这里看到了来自@Alix的代码,它做了同样的事情.但是,并没有真正效仿.
谢谢
****这里有人知道怎么做吗? ****
例如,我们有以下层次结构:
folderI ├─ folder1 │ ├─ item.PHP │ └─ so.PHP └─ folder2 └─ item.htML
并使用新的RecursiveDirectoryIterator(“folderI”)创建一个迭代器.
folderI/folder1/item.PHP
同样,如果我们做了新的RecursiveDirectoryIterator(“../ somewhere / folderI”),那么$key看起来像:
../somewhere/folderI/folder1/item.PHP
您希望获取文件的路径,而不包括用于创建迭代器的路径.值得庆幸的是,RecursiveDirectoryIterator有一个方法,其唯一目的就是做到这一点.
RecursiveDirectoryIterator :: getSubPathname()
您可以使用以下更容易的方法
$newKey = $iterator->getSubPathname();
对于item.PHP,这将返回以下内容,给定上面显示的相同文件夹结构:
folder1/item.PHP
该方法可以像这样使用:
foreach ($iterator as $key=>$value) { $zip->addFile(realpath($key),$iterator->getSubPathname()) or die ("ERROR: Could not add file: $key"); }
另外:我们可以在这里使用$iterator-> getSubPathname(),因为RecursiveIteratorIterator将对未知方法的任何调用传递给“内部迭代器”,在本例中是RecursiveDirectoryIterator.同样,你可以做$iterator-> getInnerIterator() – > getSubPathname(),两者都做同样的工作.
以上是脚本宝典为你收集整理的php – 在压缩文件中没有父文件夹的文件夹中压缩文件全部内容,希望文章能够帮你解决php – 在压缩文件中没有父文件夹的文件夹中压缩文件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。