如何使用ZipArchive重命名文件夹?

时间:2010-11-27 08:01:02

标签: php zend-framework unzip

解压缩之前是否有任何重命名zipfile文件夹的解决方案?

$zip = new ZipArchive();
$result=$zip->renameName($acfoldername , $renameFolder );

函数renameName似乎只是重命名文件而不是文件夹

$zip->renameName($acfoldername , $renameFolder );

OR  在Zend Framework中是否有任何zip文件管理解决方案?

2 个答案:

答案 0 :(得分:5)

使用ZipArchive重命名zipfile中的目录: - )

$tmpfile = "myzip.zip";
copy( "template.zip", $tmpfile );

$zip = new ZipArchive;
$res = $zip->open( $tmpfile, ZipArchive::CREATE );

if ($res === TRUE) {
  $index = "<html>content</html>";

  $zip->addFromString('dirname/index.html', $index);
  $zip->addFile("mp3/sample.mp3", 'dirname/audio/myAudioFile.mp3');

  // rename directory "dirname"
  $name="newDirectoryName";
  $i=0;
  while($item_name = $zip->getNameIndex($i)){
    $zip->renameIndex( $i, str_replace( "dirname", $name, $item_name ) );
    $i++;
  }

  $zip->close();

  header('Content-type: application/zip');
  header('Content-Disposition: attachment; filename="'.$name.'.zip"');
  readfile($tmpfile);
  unlink($tmpfile);
}

答案 1 :(得分:-2)

很抱歉,但ZF中没有能够重命名ZIP文件中的文件夹的课程

但同样没有什么不可能你可以使用相同的ZipArchive在某处提取文件,然后使用函数GlobSPL Directory Iterator

使用rename找到您想要的文件夹,最后一步是使用相同的ZipArchive再次压缩您的文件夹

创建zip文件的示例:http://davidwalsh.name/create-zip-php