2012-07-07 117 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,但可以通过名称来决定要执行的操作。

相关问题