2016-07-21 36 views
0

Ich versuche, einen Ordner in PHP zu entpacken und einige Sachen mit den Dateien zu machen. Ich habe es funktioniert normal, aber ich muss dies für gezippte Ordner innerhalb der gezippten Ordner root arbeiten.Mit PHP rekursiv entpacken Sie einen Ordner in einem gezippten Ordner?

Also zipped1 könnte image1 und zipped2 enthalten. Ich muss auch Ziped2 extrahieren. Ich versuche dies durch Rekursion wie unten zu tun. Offensichtlich ist dies nicht der vollständige Code, sondern die relevanten Bits.

$tempFile = $_FILES['Filedata']['tmp_name']; 
function handle_zip($ZipHandler) 
{ 
    while($zip_entry = zip_read($ZipHandler)) 
    { 
    $ext = explode(".",zip_entry_name($zip_entry))[1]; 
    if($ext=="zip") 
    handle_zip(zip_open($zip_entry)); 
    } 
} 
$ZipHandler = zip_open($tempFile); 
handle_zip($ZipHandler); 
zip_close($ZipHandler); 

So ist das Problem, dass die Funktion rekursiv Aufruf muss die Datei als Argument senden, aber zip_open scheint auf dem Server hochgeladenen Dateien in ihren temporären Ordner zu öffnen - und das rekursive arugment ist nicht in diesem temporären Ordner .

Was kann ich tun?

Antwort

0

Ich habe nicht versucht, aber man konnte

zip_entry_open($zip_entry,$entry); 
handle_zip(zip_open($entry)); 

in dem rekursiven Aufruf versuchen. This ist die relevante Dokumentseite.

Auch möchten Sie vielleicht den letzten Teil des explodierten Ergebnisses anstelle des zweiten erhalten, falls eine Datei mehrere Punkte im Namen hat oder keine.

+0

Danke aber nicht gehen. Ich bekomme einen Fehler 1, wenn ich versuche, das in der while-Schleife zu lesen. –