gpt4 book ai didi

joomla - JArchive::为 Joomla 2.5 创建?

转载 作者:行者123 更新时间:2023-12-04 15:46:48 25 4
gpt4 key购买 nike

基本上,我正在尝试使用 Joomla JArchive::create() 从相对路径压缩目录。功能。到目前为止,我可以压缩一个目录,但它压缩了整个绝对路径。

我使用该zip绝对路径的代码如下所示:

$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);

我认为这与使用 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();

关于joomla - JArchive::为 Joomla 2.5 创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11083731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com