2010-08-18 16 views
0

J'essaie actuellement de créer un système de téléchargement de contenu et bien qu'il y ait erreur étant fabriqués à partir de la page lorsque je vérifie le dossier approprié pour le contenu est videcontenu du dossier Zip ne sont pas copiés dans

$chapterZip = new ZipArchive(); 

if ($chapterZip->open($_FILES['chapterUpload']['name'])) 
{ 
    for($i = 0; $i < $chapterZip->numFiles; $i++) 
    { 
    $pictureName = $chapterZip->getNameIndex($i); 
    $fileOpened = $chapterZip->getStream($pictureName); 
    if(!$fileOpened) exit("failed\n"); 
    while (!feof($fileOpened)) { 
     $contents = fread($fileOpened, 8192); 
     // do some stuff 
     if(copy($contents,"Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/".$pictureName."")) 
     { 
      if(chmod("Manga/".$_POST['mangaName']."/".$_POST['chapterName']."/".$pictureName."", 0664)) 
      { 
       $errmsg0.= "File successfully copied<br/>"; 
      } 
      else 
      { 
       $errmsg0.= "Error: failed to chmod file<br/>"; 
      } 
     } 
     else 
     { 
      $errmsg0.= "Error: failed to copy file<br/>"; 
     } 
    } 
    fclose($fileOpened); 
    } 

}

Toute aide à ce problème serait très apprécié

+0

Le code est très difficile à lire. Pouvez-vous expliquer plus en détail ce que vous faites ici? –

+0

Vous obtenez une erreur ou pas? En outre, vous mélangez les octets de lecture ($ content) avec la copie de fichier, je doute que cela puisse fonctionner. Omettre la moitié du code n'aide pas non plus. – PhiLho

+0

@Pekka Le code lit dans un fichier zip téléchargé à partir du site, ouvre le fichier et les boucles à travers le contenu le copier dans les dossiers créés plus tôt dans la classe. @PhiLho Je ne reçois aucune erreur et j'ai maintenant inclus la méthode entière dans la question, je pensais juste que c'était un peu hors de propos pour la question que je posais. – dbomb101

Répondre

1

je regardais dans davantage et a trouvé une méthode assez simple pour extraire le fichier avec le PHP manuel en ligne

$zip = new ZipArchive; 
$res = $zip->open('test.zip'); 
if ($res === TRUE) { 
    echo 'ok'; 
    $zip->extractTo('test'); 
    $zip->close(); 
} else { 
    echo 'failed, code:' . $res; 
} 
0

Je ne sais pas si cela vous aide, mais j'ai écrit ce script hier après quelques informations que j'ai trouvé la recherche de passer comme un éclair récursive.

function zip($source, $destination) 
    { 
     if (file_exists($source) === true) 
     { 
      $zip = new ZipArchive(); 

      if ($zip->open($destination, ZIPARCHIVE::CREATE) === true) 
      { 
       $source = realpath($source); 

       if (is_dir($source) === true) 
       { 
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); 

        foreach ($files as $file) 
        { 
         $file = realpath($file); 

         if (is_dir($file) === true) 
         { 
          $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); 
         } 

         else if (is_file($file) === true) 
         { 
          $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); 
         } 
        } 
       } 

       else if (is_file($source) === true) 
       { 
        $zip->addFromString(basename($source), file_get_contents($source)); 
       } 
      } 

      return $zip->close(); 
     } 
    } 

Trouvé sur un site Web je ne me souviens pas où. Adapté un peu.

Utilisation: zip ('mydir /', 'myZipFile.zip');

Br, Paul Peelen

+0

'if (is_true ($ foo) === true) {$ isIsTrueTrue = true; $ isIsIsTrueTrueBoolean = is_boolean ($ isIsTrueTrue) === true; } ' – janmoesen