【问题标题】:Uploading multiple files using html5 and php使用 html5 和 php 上传多个文件
【发布时间】:2012-02-02 06:52:34
【问题描述】:

我有一个设置了 HTML5 多重属性的文件上传表单。

但是,表单仍然只上传一个文件。我需要在 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";
  }
}
}
?>

【问题讨论】:

  • 也发布您的表单代码。它应该包含一个多部分的规范。
  • 您的代码似乎只处理一个文件 - 您确定问题出在 上传 方面吗?
  • 值得注意的是,IE(我认为是 Opera)不支持通过 &lt;input type="file" /&gt; 元素选择多个文件。

标签: php html file-upload


【解决方案1】:

我相信你的领域应该是 &lt;input type="file" multiple="multiple" name="files[]" /&gt;

然后在 PHP 中:

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

【讨论】:

  • 我已根据您的回复修改了我的代码,但现在似乎没有上传任何内容...任何想法...谢谢
  • 在你的循环中你仍然在调用$_FILES['file']['type']等等...你应该调用$file['type'](你的文件数组循环内的特定文件)。
【解决方案2】:
for ($i = 0; $i < count($_FILES['newsImage']['name']); $i++) {
    // handle upload
}

【讨论】:

  • 你为什么接受你自己的答案,这个答案在我两周后得到了回答(这是相同的解决方案......?)我不得不承认似乎有点奇怪(:
  • 在使用多文件输入时,由于文件数组的结构,foreach 将无法工作。您需要将每个文件信息部分定义为 $_FILES['inputName']['name'][0] 用于第一个文件名, $_FILES['inputName']['name'][1] 用于第二个,等等。
  • 虽然这是一篇旧帖子,但我也遇到过这个问题。实际上,上传多个文件确实会使数组结构更加复杂,因此使用像这样的常规 for 循环确实很有帮助。我确信有一种方法可以使用 foreach,但这更简单。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:
    <?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>";
    
               }
    
            }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2021-02-26
      相关资源
      最近更新 更多