2017-06-01 57 views
2

PHP允許讀取ZIP文件與zip://wrapper上即時存檔:使用zip://封裝用一個單一的文件名字是未知的

$fp = fopen ('zip://archive.zip#dir/file.txt', 'rb'); 

都好,當你知道壓縮的文件名。這不是我的情況:我的應用程序必須處理包含單個文件的ZIP存檔,其名稱在打開存檔之前是未知的。

是否有一個選項告訴包裝打開存檔中的第一個文件,沒有文件名?

我知道我可以使用ZipArchive or Zip Functions,我只是想保持簡單並儘可能使用流包裝。

回答

0

在挖掘包裝器的source code後,我找到了我的問題的答案。

目前沒有辦法使用包裝器打開存檔而不提供文件名。


甲解決方案包括使用兩個包裝和ZipArchive

$path = '/path/to/archive.zip'; 

$zip = new \ZipArchive(); 

if ($zip->open($path) === true) { 
    if ($zip->numFiles === 1) { 
     $compressedFileName = $zip->statIndex(0)['name']; 
     $zipPath = 'zip://' . $path . '#' . $compressedFileName; 

     $fp = fopen($zipPath, 'rb'); 
     // ... 
    } 
} 
相關問題