2016-04-06 16 views
0

Birkaç dosya barındıran bir ftp sitem var. Kullandığımız indirme yazılımı tarafından yapılan kısıtlamalar nedeniyle her bir dosya kendi dizininde kendi ana dizininde (yüklemeler) kendi başınadır (her dosya benzersiz bir dosya yoluna sahip olmalı ve dosya adı modpack.zip olmalıdır. Bu ismin herhangi bir varyasyonu olması, bu nedenle tam adı, her sürümün kendi alt klasöründe olması gerekir)PHP'de dosyaları listeleme (SADECE dosyalar) bir dizinin tüm alt dizinlerinden bağlantı olarak

Bir tablodaki ana yükleme klasörünün tüm alt dizinlerindeki tüm dosyaları listelemenin bir yolunu bulmalıyım .., hem de listeye ne kadar büyük her dosya olduğu gibi her dosya kendisine bir bağlantı olmalı ve klasörler listelenir gerekmez

Ben şimdiye kadar benim başlangıç ​​noktası olarak sahip kodudur:

<div id="list"><table> 
<tr><td align="center">Modpack List</td></tr> 
<?php 

$dir_open = opendir('uploads/'); 

while(false !== ($filename = readdir($dir_open))){ 
    $bytes = filesize($_SERVER['DOCUMENT_ROOT']."/uploads/".$filename.""); 
    if($filename != "." && $filename != ".."){ 
     echo '<tr><td><a href="/uploads/'.$filename.'">'.$filename.'</a> - '.bytesToSize($bytes).'</td></tr>'; 
    } 
} 

closedir($dir_open); 

?> 
</table> 
</div> 

readdir() ve scandir() işlevlerini kullanmayı denedim, ancak ikisi de istemediğim dosyaları ve alt klasörleri listeler ve geçerli kurulum yalnızca doğrudan/karşıya yükleme altındaki dosyaları ve klasörleri listeler ve listelenmez Klasörü tıklatmadığı sürece alt klasörlerin altındaki dosyalardan herhangi biri, bu klasör için beni bir FTP sayfasına götürür.

Diğer sitelerin yanı sıra burada gördüğüm birkaç yayınlanmış çözümleri denedim, ancak bunların hiçbirini ihtiyacım yoktu ve klasörleri bağlantı olarak nasıl çıkaracağımı anlayamıyorum ve yalnızca dosyaları listeler.

+0

kullanın [ 'is_file()'] (http://php.net/manual/en/function.is-file.php) (veya 'is_dir() '). – Kenney

cevap

0

topak() kullanmayı deneyin:!

<?php 
    foreach(glob('path-to/UPLOAD_FOLDER/*') as $subDirectory) {   
     foreach(glob($subDirectory'./*') as $file) { 

      // do what you want with file here... example: 
      $file_list .= $file.'<br>';        
     }        
    } 
    echo $file_list; 
?> 
+0

Bu, yalnızca her alt dizinin altındaki dosyaları listelemek için çalıştı. Yardım için teşekkürler! – Bryan

+0

Karşılamadınız ... Glob() işlevini seviyorum ... Resim galerimde görüntüleri listelemek için yukarıdaki kodu kullanıyorum – petebolduc

İlgili konular