我使用以下代码创建一个带有php的zip文件:
<?php
$file1 = '/home/##ACCOUNT##/public_html/##SITE##/images/uploadfiles/backup/file1.csv';
$file2 = '/home/##ACCOUNT##/public_html/##SITE##/images/uploadfiles/backup/file2.csv';
// CREATE THE ZIP
$files = array($file1, $file2);
$zipname = '/home/##ACCOUNT##/public_html/##SITE##/images/uploadfiles/backup/backup.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
?>
在创建的zip中,我得到2个文件,因为我想要它但它还包含这些文件的树/路径,所以打开zip你必须在那些文件夹中导航才能到达文件是否有一个只需要zip文件中的2个文件.csv&amp;没有文件夹的file2.csv?
我在另一篇文章中找到了我想要的anwser php creating zips without path to files inside the zip
答案 0 :(得分:0)
您可以使用ZipArchive::renameName方法更改要添加的文件的名称,或使用ZipArchive::addFromString。在第二种情况下,您需要记住您首先需要将该文件读入内存,因此只应考虑可用内存。
此外,您可以按照其他答案中的建议使用第二个参数ZipArchive::addFile。
foreach ($files as $file) {
$localName = basename($file);
$zip->addFile($file, $localname);
}
答案 1 :(得分:0)
作为解决方法使用 $ localname (第二个参数)来定义和控制zip中的文件/目录结构,例如。
<?php
$zip->addFile($file, $localname_relative_path);
?>