2012-03-29 55 views
0

我在一個特定的目錄中有很多文件。在某個PHP頁面中,我列出了具體鏈接的內容,並分別下載每個項目。現在我需要顯示一個鏈接,它將壓縮該目錄的所有內容,以便任何訪問者可以將所有內容作爲單個ZIP文件下載。如何使用PHP將目錄中的內容作爲ZIP文件下載?

+0

您是否需要一個PHP腳本來創建目錄中內容的zip文件? – Araw 2012-03-29 08:17:26

+0

是的,這就對了。 – 2012-03-29 08:20:34

+0

你可以看看這個:http://davidwalsh.name/create-zip-php 或者你可以看看其他答案,這是相同的解決方案。 – Araw 2012-03-29 08:25:34

回答

1

使用ZipArchive的壓縮和解文件和RecursiveDirectoryIterator用於獲取所有目錄中的文件

$zipfilename = <zip filename>; 
$zip = new ZipArchive(); 
$zip->open($zipfilename, ZipArchive::CREATE); 
// add all files in directory to zip 
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('path/to/files/')) as $filename) { 
    $zip->addFile($filename); 
} 
$zip->close(); 

然後壓縮發送到瀏覽器

header('Content-Type: application/zip'); 
header('Content-disposition: attachment; filename="'. $zipfilename .'"'); 
header('Content-Length: ' . filesize($zipfilename)); 
readfile($zipfilename); 

很明顯,您可以將目錄名稱和事件壓縮文件名稱發佈到腳本中,但它會爲您提供起點

+0

當用戶完成下載時,是否有任何選項可以刪除ZIP文件? – 2012-03-30 06:12:41

+0

@SuryaS是的... [unlink](http://php.net/manual/en/function.unlink.php) – ManseUK 2012-03-30 07:56:55

+0

謝謝老大! – 2012-03-30 18:33:06

0

試試這個

$files = array('file1.txt', 'file2.txt', 'file3.txt'); 
$zip = new ZipArchive; 
$zip->open('file.zip', ZipArchive::CREATE); 
foreach ($files as $file) { 
    $zip->addFile($file); 
} 
$zip->close(); 
相關問題