2012-01-11 44 views
2

說,在我的網絡服務器有一個文件夾調用upload_files 然後我的一個PHP頁面應該抓住該文件夾中的所有文件名 我已經搜索了但到目前爲止返回的文件名僅僅是用戶瀏覽的頁面 謝謝如何使用PHP來檢索特定文件夾中的所有文件名

+0

使用'水珠( 「upload_files/*」 )'。它返回一個包含所有文件的數組(包括文件夾)。答案太短而未選中。 – Jon 2012-01-11 03:02:31

+0

請更準確地解釋你正在嘗試做什麼,以及你所獲得的。一些代碼會很好。 – Corubba 2012-01-11 03:03:25

回答

4

有檢索文件夾內容,如globscandirDirectoryIteratorRecursiveDirectoryIterator的方法很多,本人來說,我會建議你檢查DirectoryIterator,因爲它有很大的潛力。

實施例使用scandir方法

$dirname = getcwd(); 

$dir = scandir($dirname); 

foreach($dir as $i => $filename) 
{ 
    if($filename == '.' || $filename == '..') 
     continue; 

    var_dump($filename); 
} 

實施例使用DirectoryIterator

$dirname = getcwd(); 

$dir = new DirectoryIterator($dirname); 

foreach ($dir as $path => $splFileInfo) 
{ 
    if ($splFileInfo->isDir()) 
     continue; 

    // do what you have to do with your files 

    //example: get filename 
    var_dump($splFileInfo->getFilename()); 
} 

這裏使用RecursiveDirectoryIterator類較不常見的例子:

//use current working directory, can be changed to directory of your choice 
$dirname = getcwd(); 

$splDirectoryIterator = new RecursiveDirectoryIterator($dirname); 

$splIterator = new RecursiveIteratorIterator(
    $splDirectoryIterator, RecursiveIteratorIterator::SELF_FIRST 
); 

foreach ($splIterator as $path => $splFileInfo) 
{ 
    if ($splFileInfo->isDir()) 
     continue; 

    // do what you have to do with your files 

    //example: get filename 
    var_dump($splFileInfo->getFilename()); 
} 
+0

對於scandir +1,導致其他人提出glob爲一些離奇的原因 – Cyclone 2012-01-11 03:29:48

+0

我猜他們有很強的Linux背景 – Nazariy 2012-01-11 03:38:53

+0

$ dir = scandir($ dir);會導致undefine變量 – user782104 2012-01-11 04:52:13

0

以下將打印文件夾upload_files中的所有文件。

$files = glob("upload_files/*"); 
foreach ($files as $file) 
    print $file; 
1

我同意與Jon:

glob("upload_files/*") 

返回的文件名的陣列。

但請注意!當你讓人們上傳 的東西到你的網絡服務器時,可能會發生壞事。建立保存上傳腳本 是相當困難的。

只是一個例子:你必須確保沒有人可以上傳 一個php文件到你的上傳文件夾。如果可以的話,他們可以通過在他們的瀏覽器中輸入適當的URL來運行 。

請在嘗試完成之前瞭解有關php &的安全性!

相關問題