ZipArchive .zip 文件显示根目录中的所有文件

发布于 2024-11-02 04:55:40 字数 855 浏览 1 评论 0 原文

我希望代码将树中的所有文件制作为根目录中的 .zip 文件,

   <?PHP
// create object
$zip = new ZipArchive();

// open archive 
if ($zip->open('my-archive.zip', ZIPARCHIVE::CREATE) !== TRUE) {
    die ("Could not open archive");
}

// list of files to add
// list of files to add
$fileList = array(
    'im/asd.pdf',
    'im/df.pdf',
    'im/d/qoyyum.txt'
);

// add files
foreach ($fileList as $f) {
    $zip->addFile($f) or die ("ERROR: Could not add file: $f");   
}

// close and save archive
$zip->close();
echo "Archive created successfully.";    
?> 

例如文件夹 /im 包含

/im/asd.pdf
/im/df.pdf
/im/d/qoyyum.txt

“my-archive.zip”提取物应该如下所示

my-archive/asd.pdf
my-archive/df.pdf
my-archive/qoyyum.txt

我想在提取 zip 时阻止文件夹层次结构。这样每个文件都应该位于提取的 zip 文件夹的根目录中,

请提出建议

I want the code to make all files in the tree to .zip files in the root

   <?PHP
// create object
$zip = new ZipArchive();

// open archive 
if ($zip->open('my-archive.zip', ZIPARCHIVE::CREATE) !== TRUE) {
    die ("Could not open archive");
}

// list of files to add
// list of files to add
$fileList = array(
    'im/asd.pdf',
    'im/df.pdf',
    'im/d/qoyyum.txt'
);

// add files
foreach ($fileList as $f) {
    $zip->addFile($f) or die ("ERROR: Could not add file: $f");   
}

// close and save archive
$zip->close();
echo "Archive created successfully.";    
?> 

for example folder /im contains

/im/asd.pdf
/im/df.pdf
/im/d/qoyyum.txt

the 'my-archive.zip' extract should look like this

my-archive/asd.pdf
my-archive/df.pdf
my-archive/qoyyum.txt

I want to prevent the folder hierarchy when extracting the zip. so that every files should be in the root of the extracted zip folder

please suggest a tip to do

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

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

发布评论

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

评论(1

所谓喜欢 2024-11-09 04:55:40

ZipArchive::addFile() 中有第二个参数,称为 localname(请参阅 此处),它允许您设置 zip 存档中文件的本地名称。使用它来覆盖默认的目录结构。

foreach ($fileList as $f) {
    $filename_parts = explode('/', $f);  // Split the filename up by the '/' character
    $zip->addFile($f, end($filename_parts)) or die ("ERROR: Could not add file: $f");   
}

There's a second parameter in ZipArchive::addFile() called localname (see here) which lets you set the local name of the file within the zip archive. Use this to override the directory structure which is the default.

foreach ($fileList as $f) {
    $filename_parts = explode('/', $f);  // Split the filename up by the '/' character
    $zip->addFile($f, end($filename_parts)) or die ("ERROR: Could not add file: $f");   
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文