J'ai vu la classe ZipArchive dans PHP qui vous permet de lire des fichiers Zip. Mais je me demande s’il existe un moyen de parcourir son contenu sans extraire d’abord le fichier.
Tel que trouvé sur http://www.php.net/ziparchive :
Le code suivant peut être utilisé pour obtenir une liste de tous les noms de fichiers dans un fichier Zip.
<?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 ); } ?>
http://www.php.net/manual/en/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);
}
?>
J'ai résolu le problème comme ça.
$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);