2

Joomla 版本 = 2.5.6

服务器 = Wamp 服务器

PHP = 5.3.8

我终于弄清楚了如何使用以下代码压缩文件和数组:

$filesArray = array();
$archivename = JPATH_SITE.'/'.'modules'.'/'.'mod_module_gen'.'/'.'package'.'/'.$new_folder_name.'/'.$new_folder_name.'.zip';
$excludes = array('.svn', '.zip','.DS_Store','__MACOSX','CVS');
$files = JFolder::files(JPATH_SITE.'/'.'modules'.'/'.'mod_module_gen'.'/'.'package'.'/'.$new_folder_name, null, true, true, $excludes);

foreach($files as $file)
{
    $data = JFile::read($file);
    $filesArray[] = array('name' => $file, 'data' => $data);
}

$zip =& JArchive::getAdapter('zip');
$zip->create($archivename, $filesArray);

但是,如果不只是将文件压缩到创建的文件夹中,它会压缩文件数组前导的所有文件夹。

/wamp/www/joomjunk/modules/mod_module_gen/package/$new_folder_name/files

$new_folder_name= 用户定义名称

它应该只压缩,如下所示:

$new_folder_name/files

代码中是否有我做错的地方或丢失的东西导致它也压缩所有以前的文件夹?任何帮助将不胜感激。问候

4

1 回答 1

1

如果您使用绝对路径名,例如

JPATH_SITE.'/'.'modules'.'/'.'mod_module_gen'.'/'.'package'.'/'.$new_folder_name

您将获得一个包含您提供给它的文件夹结构的存档。

命令行中的简短示例:

thomas@thinky ~ % tar -cf bar.tar image.jpg
thomas@thinky ~ % tar -cf foo.tar /home/thomas/image.jpg

注意档案中的文件夹结构:

thomas@thinky ~ % tar -tvf bar.tar
-rw-rw-r-- thomas/thomas 1922254 2012-04-23 20:02 image.jpg
thomas@thinky ~ % tar -tvf foo.tar
-rw-rw-r-- thomas/thomas 1922254 2012-04-23 20:02 home/thomas/image.jpg
于 2012-06-21T15:32:27.773 回答