См. этот вопрос . Я не могу использовать этот код:
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, например:
dir/newname.txt
Это означает, что невозможно добавить новый файл в каталог.