两个或多个文件输入

时间:2012-12-06 06:41:55

标签: php html file file-upload

我有多个类型为file

的输入
<form  name="vform" method="post" enctype="multipart/form-data" >
  <input type=file name='thumbs1' />
  <input type=file name='thumbs2' />
  <input type=file name='thumbs3' />
  ... etc
</form>

假设我得到了文件输入= 3的计数

$i = 1;
while($i <= 3)
{
   $thumb = "thumbs".$i;
   $fileName = $_FILES['$thumb']['name'];
   $tmpName  = $_FILES['$thumb']['tmp_name']; 
   $filePath = "directory/";

   if(move_uploaded_file($tmpName, $filePath)){echo " ";}else{echo " ";}

   $i++;
}

这里发生的是只有第一个获得文件名,但没有一个移动到预期的目录或其他地方。

在处理多个文件输入时是否有特定的声明方式?

2 个答案:

答案 0 :(得分:2)

$_FILES['$thumb']中删除单引号,并将其更改为$_FILES[$thumb]

PHP不会在单引号' '中解析变量。

move_uploaded_file功能上,您需要在移动前指定目的地的文件名

$i = 1;
while($i <= 3)
{
   $thumb = "thumbs".$i;
   $fileName = $_FILES[$thumb]['name'];
   $tmpName  = $_FILES[$thumb]['tmp_name']; 
   $filePath = "directory/";

   if(move_uploaded_file($tmpName, $filePath.$fileName)){echo " ";}else{echo " ";}

   $i++;
}

答案 1 :(得分:0)

也许files中的单引号会出现问题,请尝试使用

$i = 1;
while($i <= 3)
{
   $thumb = "thumbs".$i;
   $fileName = $_FILES[$thumb]['name'];
   $tmpName  = $_FILES[$thumb]['tmp_name']; 
   $filePath = "directory/".$filename;

   if(move_uploaded_file($tmpName, $filePath)){echo " ";}else{echo " ";}

   $i++;
}