2012-07-07 120 views
1

我可以調出數組中的所有多個文件,並且它可以存儲在特定的文件夾中,例如。 「./documents/」。存儲上傳到不同文件夾的多個文件

Code for my form: 
<form id="Student" name="Student" method="post" action="uploaded.php" enctype="multipart/form-data"> 
<input name="upload[]" id="Assign" type="file"/> 
<input name="upload[]" id="Testpapers" type="file"/> 
<input name="upload[]" id="others" type="file"/> 
<input type="submit" name="submit" value="Submit"> 

Code for uploaded.php: 
$number_of_uploaded_files = 0; 
for ($i = 0; $i < count($_FILES['upload']['name']); $i++) 
{ 
if ($_FILES['upload']['name'][$i] != '') 
{ 
    $dir = "documents/"; 
    $number_of_uploaded_files++; 
    $uploaded_files[] = $_FILES['upload']['name'][$i]; 
    move_uploaded_file($_FILES['upload']['tmp_name'][$i], $dir. $_FILES['upload']['name'][$i])   

    } 

是否可以將它們分別存儲在不同的文件夾中?像將它們存儲在「文檔/分配」,然後是「文檔/測試」。我想不出一個想法來檢測數組索引屬於assign或testpapers,其他人。

+0

閱讀[PHP手冊](http://php.net/manual/en/features.file-upload.multiple.php)上的評論對多個文件上傳有一些很好的見解。你應該檢查一下。 – Lix 2012-07-07 14:58:59

+0

你也可以考慮使用ckfinder。我發現它非常好! – Alex 2012-07-07 15:37:23

回答

1

id不會傳遞到服務器端。

但你可以像下面那樣分配鍵。

<input name="upload[assign]" id="Assign" type="file"/> 
<input name="upload[testpapers]" id="Testpapers" type="file"/> 
<input name="upload[others]" id="others" type="file"/> 

在服務器端,您可以使用foreach來循環它。

foreach ($_FILES['upload']['name'] as $key => $name) { 
    //... 
} 
+0

@xdazz,在這種情況下,它只會將文檔名稱作爲$ name傳遞出去。我如何將它保存在不同的文件夾中?如果(上傳[assign] =「something」){move_uploaded_files ...} – JLearner 2012-07-07 14:52:30

+0

if($ key ==「something」){...} – worenga 2012-07-07 14:54:20

+0

@ user976050您將獲得像'assign','testpapers',他們不是你想要的? – xdazz 2012-07-07 15:04:59

0

只需更改字段名稱。然後,您可以通過$ i訪問noti,但可以通過名稱來決定要執行的操作。

相關問題