2012-04-10 4 views
0

Ich habe eine Zip-Datei, die ich eine Datei unter einem Ordner aktualisieren muss, funktioniert der folgende Block "gut", fügen Sie korrekt die Datei node.ndf unter dem angegebenen Pfad.Archiv :: Zip-Duplizierung hinzugefügt Dateien - Wie aktualisiere ich Dateien in einem Zip korrekt?

Aber wenn ich es zum zweiten Mal oder mehr laufen, dupliziert es die Datei unter dem Ordner

als Beispiel:


erstes Mal laufen:

file.zip Inhalt:

manifest.v3

ns/anpassen/node.ndf


zweites Mal laufen:

manifest.v3

ns/anpassen/node.ndf

ns/anpassen/node.ndf


und so weiter ...

Hier ist der Code im zur Zeit mit:

$obj = Archive::Zip->new(); 

$status = $obj->read($file); 

if ($status != AZ_OK) { 
die('Error in file!'); 
    } else { 
     @files = ('node.ndf'); 

     foreach $filea (@files) { 
    $obj->addFile($filea); 
    $obj->addTreeMatching('.', 'ns/adapt/', 'node.ndf'); 
    } 

    if ($obj->overwrite() != AZ_OK) { 
    print "Error in archive creation!"; 
    exit; 

    } else { 
    print "Archive created successfully!"; 
    } 
unlink('node.ndf'); 
} 

Wer weiß, die richtige Verwendung von Archiven :: Zip, um eine Datei unter einer Ordnerstruktur in der Zip-Datei zu aktualisieren?

Vielen Dank im Voraus.

Antwort

1

Sie können entweder

$obj->removeMember('ns/adapt/node.ndf'); 
$obj->addFile('node.ndf', 'ns/adapt/node.ndf'); 

oder, wenn Ihre node.ndf Dateigröße oder Änderungszeit geändert hat, können Sie in einem einzigen Schritt beides mit

$obj->updateMember('ns/adapt/node.ndf', 'node.ndf'); 
+0

Hallo, Dank für Sie antworten funktionierte wie vorgesehen mit: $ obj-> updateMember ('ns/adapt/node.ndf', 'node.ndf'); –

Verwandte Themen