2012-03-31 68 views
0

我已經搜索過SO以獲取此功能的答案我的願望,但我需要的是有點獨特?通過HTML表單提交的目錄名稱圖像列表

我有一個輸入元素,我輸入一個子文件夾的名稱,點擊提交,並且該指定文件夾中的圖像名稱列表通過PHP或其他方式生成。這是本地的,沒什麼特別的。

<form action="Make_List.php" method="post"> 
<input type=text name="location"/> 
<input type=submit/> 
</form> 

<div id="List_Generated"> //desired output. 
<span>A.jpg</span> 
<span>B.jpg</span> 
<span>C.jpg</span> 
<span>D.png</span> 
</div> 

我不知道要在Make_List.php中放什麼,或者它會在本地工作。我確實在網上找到:

//path to directory to scan 
$directory = "../images/team/harry/" (+ sub-folder name); 

//get all image files with a .jpg extension. 
$images = glob($directory . "*.jpg"); 

//print each file name 
foreach($images as $image) 
{ 
echo $image; 
} 

但Firefox不知道該怎麼辦,它讓我打開或保存.php文件。 SO(本地部分)上的一些類似問題意味着我不需要PHP?

任何提示或指針會有幫助。

+0

您必須在某種形式的服務器環境中運行PHP。我擔心你不能從文件系統中運行它。如果您在Mac上搜索「MAMP」,或者如果您在Windows上搜索「WAMP」,則爲您的開發設置本地Web服務器。 – uotonyh 2012-03-31 01:12:15

+0

@uotonyh - 是否有一些替代方案可以在本地使用,而不用擔心服務器的問題? – 2012-03-31 01:16:39

+0

@Jason不,你需要'server stuff'來獲取'server'信息。 – iambriansreed 2012-03-31 01:21:42

回答

2

PHP需要處理的服務器環境。您可以在自己的計算機上本地運行服務器。 Google安裝apache + php。如果你的主機支持PHP語言,你可以在那裏測試你的代碼。

您的網絡瀏覽器不運行PHP代碼。解釋器運行腳本及其模塊以將PHP解釋器插入http服務器,即apache。然後,Apache將運行代碼並返回結果,如果它被指示通過其配置來處理帶有特定模塊的.php。

+0

如果我只想列出計算機上文件夾的內容,該怎麼辦?可能或沒有? – 2012-03-31 01:24:28

+0

沒有輸出服務器設置 – 2012-03-31 02:13:30

0

使用

//path to directory to scan 
$directory = "full/path/to/images/team/harry/" . $_POST['location']; 

foreach (glob($directory."*.jpg") as $filename) { 
    echo $filename; 
} 
0

這裏是您與,無需工作鍵入一個子目錄一個更好的例子:

<?php 
//Get subfolder list 
$folders = glob('../images/team/harry/*',GLOB_ONLYDIR); 
?> 

<form action="" method="post"> 
<select name="location" onchange="javascript:this.form.submit()"> 
<option>-Choose Subdir-</option> 
<?php 
foreach($folders as $folder){ 
    echo '<option value="'.basename($folder).'">'.basename($folder).'</option>'.PHP_EOL; 
} 
?> 
</select> 
</form> 

<?php 
//List of files once post was submitted 
if(isset($_POST['location'])){ 
    echo '<div id="List_Generated">'; 
    $files = glob('../images/team/harry/'.basename($_POST['location']).'/*.jpg'); 
    foreach($files as $file){ 
     echo '<span>'.basename($file).'</span>'.PHP_EOL; 
    } 
    echo '</div>'; 
} 
?> 
+0

OP正試圖使用​​此代碼訪問*客戶端*上的文件。 – 2012-03-31 07:46:16

0

是的,這樣的事情可以做,但有如下限制:

  • 必須使用HTML5(文檔類型和標記)。
  • 僅限谷歌瀏覽器(現在)
  • 僅適用於特定於應用的「沙箱」區域,不是您的一般文件系統。

實際上,您僅限於您的計算機或在每臺計算機環境受到控制的Intranet中的計算機;而不是整個互聯網。

我不是專家,但here's a good introduction。您至少需要閱讀簡介和「閱讀目錄內容」一節。