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

gun*_*uny 1 php zend-framework unzip

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

$zip = new ZipArchive();
$result=$zip->renameName($acfoldername , $renameFolder );
Run Code Online (Sandbox Code Playgroud)

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

$zip->renameName($acfoldername , $renameFolder );
Run Code Online (Sandbox Code Playgroud)

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

小智 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);
}
Run Code Online (Sandbox Code Playgroud)