2011-03-08 5 views
7

Dosyaları PHP'de sıkıştırırken biraz sorunla karşılaştım. Bir dosya dizisini fermuarlayan bir işlevim var, bu dosyaların hepsi farklı dizinlerde.Dosyaları PHP'de sıkıştırırken dizin yapısını kaldırın

klasör/klasor2/file1.jpg
klasör/file2.jpg
klasör/klasor2: dosyaların yapısı gibidir zip

function create_zip($files = array(),$destination = '',$overwrite = false,$add_to_db=true) { 
    print_r($files); 
     $zip = new ZipArchive(); 
     if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { 
      return false; 
     } 
     for($i=0;$i < count($files); $i++) { 
      //echo $files[$i].'<br>'; 
      $zip->addFile($files[$i],$files[$i]); 
     } 



     $zip->close(); 

     if(file_exists($destination)) { 
     // echo("Success"); 
     if($add_to_db == true) { add_file($destination); } 

      return true; 

     } else { 
     //echo("Failed"); 
      return false; 
     } 
    } 

Bir kullanıcı yüklemeleri ve ayıklar: function benziyor /folder3/file3.jpg

Sorum şu ki, PHP'yi tüm dosyaları zip dosyasının köküne yerleştirmek ve verilen yapıyı göz ardı etmek mümkün. Yani çıkarılan dosyaları gibi görünecektir:

/file1.jpg
/file2.jpg
/file3.jpg

Sonra bir klasöre tüm dosyaları ilerliyordu düşünmek ve tek çözüm Bu klasörü sıkıştırmak, ama bu overkill gibi görünüyordu.

cevap