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
代码中是否有一些我做错了或丢失的东西导致它还压缩所有以前的文件夹?任何帮助都会非常感激。此致
答案 0 :(得分: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