2015-06-11 31 views
0

我想從PHP中的數組中創建一個.tar文件,該文件包含要壓縮的文件的路徑。從PHP中的數組創建.tar文件

Array ( 
[0] => Array ([img] => 1000e5d5771dd2c08bb368faef3e44944.jpg) 
[1] => Array ([img] => 10011633ba1169e1c7a67b31ad41df0c8.jpg) 
[2] => Array ([img] => 100155e447db12dc3a0d3cc3a4bd55f10.jpg) 
) 

我甚至不知道這是可以做到的,我只知道這可以使用這樣的事情要做:

if (is_dir($Path) === true) { 
    $archive = new PharData('/var/www/html/media/migration.tar'); 
    $archive->buildFromDirectory($Path); 
} 

這焦油會從路徑創建,但我有所有我的文件與其他許多人,所以我不能使用整個路徑。有任何想法嗎?

+0

數組包含完整路徑或只是名稱? – vivoconunxino

+0

只是名字,但路徑是所有的人都一樣。 – amarincolas

+0

嘗試運行並粘貼輸出。 –

回答

1

這將做到這一點

$your_array = [ 
       [ 'img' => '1000e5d5771dd2c08bb368faef3e44944.jpg' ], 
       [ 'img' => '10011633ba1169e1c7a67b31ad41df0c8.jpg' ], 
       [ 'img' => '100155e447db12dc3a0d3cc3a4bd55f10.jpg' ] 
       ]; 

$img_path = 'location/to/your/images/directory/'; 

try 
{ 
    $archive = new PharData('archive.tar'); 

    foreach($your_array as $img) 
    { 
     $archive->addFile($img_path . $img['img']); 
    } 
} 
catch (Exception $e) 
{ 
    echo "Exception : " . $e; 
} 

注意,它會在當前目錄中創建歸檔(同此代碼段所在的目錄),您可以通過將此路徑更改爲$archive = new PharData('archive.tar');來更改此行。

1

你要添加的每個文件,當你得到了他們所有的,然後壓縮:

$archive = new PharData('/var/www/html/media/migration.tar'); 
//setting the path where all your files are: (guessing is the same the script runs) 
$path_folder = '.';  
foreach($array_files as $file) 
{ 
    if (is_dir($path_folder.'/'.$file) === true) { 
     $archive->addFile($path_folder.'/'.$file); 

    } 
} 

$archive->compressFiles(Phar::GZ);