2012-06-21 60 views
2

的Joomla版本2.5.6 =的Joomla荏苒一切

服務器= 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

也許嘗試使用相對路徑名稱將幫助? – Thomas

回答

1

如果使用絕對路徑名狀

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

你會得到與你它提供了一個文件夾結構的檔案。

短例如在命令行:

[email protected] ~ % tar -cf bar.tar image.jpg 
[email protected] ~ % tar -cf foo.tar /home/thomas/image.jpg 

請注意,在檔案文件夾結構:

[email protected] ~ % tar -tvf bar.tar 
-rw-rw-r-- thomas/thomas 1922254 2012-04-23 20:02 image.jpg 
[email protected] ~ % tar -tvf foo.tar 
-rw-rw-r-- thomas/thomas 1922254 2012-04-23 20:02 home/thomas/image.jpg 
+0

感謝回覆@Thomas,我將如何改變從絕對路徑到相對路徑? – Lodder

+1

我已經回答了這個問題,看看我是如何去除歸檔中的'home/thomas /'。也許調試你的應用程序,看看'JPATH_SITE'中的內容,並找出你的腳本運行在哪個目錄下。然後建立相對於要壓縮的目錄的路徑。最後,路徑可能與此類似:'../modules/mod_module_gen/package/'。 $ new_folder_name'。 – Thomas

+0

我意識到你已經回答了這個問題,但只是對命令有點困惑。謝謝您的幫助 ;) – Lodder