2010-09-16 7 views
3

J'ai un fichier zip. J'ai besoin d'un moyen simple de lire le nom des fichiers de la fermeture éclair et lire le contenu de l'un des fichiers.Php Zip manipulation

Est-ce que cela peut être fait directement en mémoire sans enregistrer, ouvrir et lire les fichiers?

Répondre

3

Vous devez ouvrir l'archive et peut alors parcourir les fichiers par index:

$zip = new ZipArchive(); 
if ($zip->open('archive.zip')) 
{ 
    for($i = 0; $i < $zip->numFiles; $i++) 
    { 
      echo 'Filename: ' . $zip->getNameIndex($i) . '<br />'; 
    } 
} 
else 
{ 
    echo 'Error reading .zip!'; 
} 

Pour lire le contenu d'un seul fichier, vous pouvez utiliser ZipArchive::getStream($name).

$zip = new ZipArchive(); 
$zip->open("archive.zip"); 
$fstream = $zip->getStream("index.txt"); 
if(!$fp) exit("failed\n"); 

while (!feof($fp)) { 
    $contents .= fread($fp, 2); 
} 

Une autre façon de le faire directement, il utilise le zip: // wrapper flux:

$file = fopen('zip://' . dirname(__FILE__) . '/test.zip#test', 'r'); 
... 
+0

Et comment puis-je lire le contenu de l'un des fichiers? – danidacar

+1

Pour un accès en lecture seule, vous aurez besoin http://www.php.net/manual/fr/function.ziparchive-getstream.php sinon vous devrez l'extraire d'abord – Fanis

+0

Désolé, en quelque sorte mal compris votre question - fixe le répondre. – halfdan