it-swarm.com.de

Im PHP Ist es möglich, den Inhalt einer Zip-Datei zu überprüfen, ohne zuerst den Inhalt zu extrahieren?

Ich habe die ZipArchive-Klasse in PHP gesehen, mit der Sie Zip-Dateien lesen können. Aber ich frage mich, ob es eine Möglichkeit gibt, den Inhalt zu durchlaufen, ohne zuerst die Datei zu extrahieren

25
Roman

Als Kommentar zu http://www.php.net/ziparchive gefunden:

Der folgende Code kann verwendet werden, um eine Liste aller Dateinamen in Einer ZIP-Datei abzurufen. 

<?php
$za = new ZipArchive(); 

$za->open('theZip.Zip'); 

for( $i = 0; $i < $za->numFiles; $i++ ){ 
    $stat = $za->statIndex( $i ); 
    print_r( basename( $stat['name'] ) . PHP_EOL ); 
}
?>
51
deceze

http://www.php.net/manual/de/function.Zip-entry-read.php

<?php
$Zip = Zip_open("test.Zip");

if (is_resource($Zip))
  {
  while ($Zip_entry = Zip_read($Zip))
    {
    echo "<p>";
    echo "Name: " . Zip_entry_name($Zip_entry) . "<br />";

    if (Zip_entry_open($Zip, $Zip_entry))
      {
      echo "File Contents:<br/>";
      $contents = Zip_entry_read($Zip_entry);
      echo "$contents<br />";
      Zip_entry_close($Zip_entry);
      }
    echo "</p>";
  }

Zip_close($Zip);
}
?>
14
Jerem

Ich habe das Problem so gelöst.

$Zip = new \ZipArchive();

$Zip->open(storage_path('app/'.$request->vrfile));

$name = '';

//looped through the Zip files and got each index name of the files
//since I only wanted the first name which is the folder name I break the loop 
//after updating the variable $name with the index name and that's it

    for( $i = 0; $i < $Zip->numFiles; $i++ ){
        $filename = $Zip->getNameIndex($i);
        var_dump($filename);
        $name =     $filename;
        if ($i == 1){
            break;
        }
    }

    var_dump($name);
0
Marvin Collins