使用html5和php上传多个文件

时间:2012-01-04 11:01:28

标签: php html5 file-upload

我有一个使用HTML5 multiple属性设置的文件上传表单。

但是,表单仍然只上传单个文件。我是否需要在php中创建某种循环函数,还是有其他方法可以做到这一点?

这是我的代码......

形式:

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">        
       <input type="file" multiple="multiple" name="file[]" id="file" />
       <input name="submit" type="submit" value="Submit" />    
</form>

PHP:

<?php
if(isset($_POST['submit'])) {           
foreach($_FILES['newsImage'] as $file){ 
if ((($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg")))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {


    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
}
}
?>

4 个答案:

答案 0 :(得分:3)

我相信你的领域应该是 <input type="file" multiple="multiple" name="files[]" />

然后在PHP中:

<?php
   foreach($_FILES['files'] as $file){
       // Handle one of the uploads
   }
?>

答案 1 :(得分:3)

for ($i = 0; $i < count($_FILES['newsImage']['name']); $i++) {
    // handle upload
}

答案 2 :(得分:2)

我相信这段代码可以达到目的。 它循环遍历$_FILES数组并创建一个数组,其中包含每个文件的所有属性的 key => value 对。

$temp = array();
foreach ($_FILES['file'] as $key => $value) {
    foreach($value as $index => $val){
        $temp[$index][$key] = $val;
    }
}

答案 3 :(得分:-1)

<?php   

    include 'db.php';

      extract($_POST);

        extract($_POST);
        if(isset($submit))
        {

          $count = count($_FILES['image']['name']);

           for($i=0;$i<$count;$i++)
           {
              $fname = $_FILES['image']['name'][$i];
              $file_tmp = $_FILES['image']['tmp_name'][$i];
              $file_size =  $_FILES['image']['size'][$i];
               $file_type=$_FILES['image']['type'][$i];
               echo $file_size,$file_type;         
               $target = "img/".$fname;
               move_uploaded_file($file_tmp,$target);
                echo "uploaded succ !"."<br>";

           }

        }

?>