2013-07-23 42 views
0

的孩子之一:如何下載我在PHP中創建一個壓縮文件這樣的壓縮文件

$nameFile = $_FILES['file']['name']; 
$tmpName = $_FILES['file']['tmp_name']; 

$fp  = fopen($tmpName, 'r'); 
$containFile = fread($fp, filesize($tmpName)); 
fclose($fp); 

$zip = new ZipArchive(); 

$fileconpress = "uploads/".$nameFile.".zip"; 

$conpress = $zip->open($fileconpress, ZIPARCHIVE::CREATE); 
if ($conpress) 
{ 
$zip->addFromString($nameFile, $containFile); 
$zip->close(); 

一切工作的完美。在其他頁面中,我列出了我的文件夾中的所有壓縮文件以及這些壓縮文件中的所有子文件(通過我的數據庫獲取了該列表)。

我希望能夠下載1個壓縮文件中的孩子。我怎樣才能打開服務器上的壓縮文件,並讓用戶下載其中的一個?

我檢查php.net並找到zip_read和zip_open,但他們沒有給出這麼多的例子,我有一些困難,以瞭解它是如何工作的。

回答

1

還有一堆的PHP文件中的例子:http://php.net/manual/en/function.zip-open.php

只要打開該文件,解壓到一個目錄,然後服務器你想要的。這個設置讓我懷疑你是否應該在服務器上準備好解壓縮文件,但這是你的選擇。

1
$zip = new ZipArchive; 
$res = $zip->open("uploads/".$parent.".zip"); 
if ($res === TRUE) { 
    $zip->extractTo("uploads/".$parent); 
    $zip->close(); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.$child.''); 
    header('Pragma: no-cache'); 
    readfile("uploads/".$parent."/".$child); 
} else { 
    echo 'failed, code:' . $res; 
} 
相關問題