Lod*_*der 6 joomla zip relative-path joomla2.5
基本上我正在尝试使用Joomla JArchive::create()函数从相对路径压缩目录.到目前为止,我可以压缩一个目录,但它会拉开整个绝对路径.
我使用的代码压缩绝对路径如下所示:
$zipFilesArray = array();
$new_component_path = JPATH_SITE.'/'.'modules'.'/'.'mod_module_gen'.'/'.'package'.'/'.$new_folder_name;
$dirs = JFolder::folders($new_component_path, '.', true, true);
array_push($dirs, $new_component_path);
foreach ($dirs as $dir) {
$files = JFolder::files($dir, '.', false, true);
foreach ($files as $file) {
$data = JFile::read($file);
$zipFilesArray[] = array('name' => str_replace($new_component_path.DS, '', $file), 'data' => $data);
}
}
$zip = JArchive::getAdapter('zip');
$zip->create($new_component_path.'/'.$new_folder_name.'.zip', $zipFilesArray);
Run Code Online (Sandbox Code Playgroud)
我认为与使用JPATH_SITE我尝试改变JURI::root结构的结构有关,但后来提供了一个错误,说它不是一个有效的路径.
我有人可以告诉我如何根据我提供的代码在Joomla中压缩相对路径然后这将非常感激.
最后得到了另一位扩展开发人员善意给我的代码。
$folder_path = JPATH_SITE.'/modules/mod_xxxxxxxxx/package/'.$new_folder_name;
$new_folder_name_final = $folder_path . '.zip';
$zip = new ZipArchive();
if ($zip->open($new_folder_name_final, ZIPARCHIVE::CREATE) !== TRUE) {
return false;
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder_path));
foreach ($iterator as $key=>$value) {
$key = str_replace('\\', '/', $key);
if (!is_dir($key)) {
if(!$zip->addFile(realpath($key), substr($key, strlen($folder_path) - strlen(basename($folder_path))))) {
return false;
}
}
$zip->close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |