Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用输入类型文件和PHP循环(无jQuery或Javascript)进行多文件上载_Php_Html_Web - Fatal编程技术网

使用输入类型文件和PHP循环(无jQuery或Javascript)进行多文件上载

使用输入类型文件和PHP循环(无jQuery或Javascript)进行多文件上载,php,html,web,Php,Html,Web,我想一次选择更多的图像文件并上传为1,2,3,4,。。。比如: <form action="upload_file.php" method="post" enctype="multipart/form-data"> <input type="file" name="imgs[]" id="imgs" multiple/> <input type="submit" name="submit" value="Submit" /> </for

我想一次选择更多的图像文件并上传为1,2,3,4,。。。比如:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="imgs[]" id="imgs" multiple/> 
    <input type="submit" name="submit" value="Submit" />
</form>

PHP代码:

<?php

if (file_exists("upload/" . $_FILES["imgs"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";

      }
    else
      {

//I think loop goes here 
===================
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
===================

      }
?>

==================================================================

这是我的作品

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="uploads[]" multiple>
    <input type="submit" name="submit" value="Submit" />
</form>

PHP



这是可行的…

当您有多个上传时,PHP以一种奇怪(但一致)的方式构建
$\u文件数组。尝试使用三个文件输入创建此表单:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    <input type="file" name="imgs[]" id="imgs" multiple /> 
    <input type="submit" name="submit" value="Submit" />
</form>

然后在接收表单的PHP代码中,仅放置:

<?php print_r($_FILES); ?>

因此,您可以看到
$\u文件
数组结构。在这一点上,所有的一切都对你来说是清楚的,你将知道如何在上面循环以保存所有上传的图像。祝你好运;)

用以下代码替换您的php代码:

<?php
for($i=0;$i<count($_FILES["imgs"]["name"]);$i++) 
{
if (file_exists("upload/" . $_FILES["imgs"]["name"][$i]))
      {
      echo $_FILES["imgs"]["name"][$i] . " already exists. ";
      }
    else
      {

//I think loop goes here 
===================
      move_uploaded_file($_FILES["imgs"]["tmp_name"][$i],
      "upload/" . $_FILES["imgs"]["name"][$i]);
      echo "Stored in: " . "upload/" . $_FILES["imgs"]["name"][$i];
===================

      }
}
?>

我已经测试了这个代码,它可以工作,我一解出来就忘了回答

<form action="upload_file.php" method="post" enctype="multipart/form-data">
 <input type="file" name="uploads[]" multiple>
 <input type="submit" name="submit" value="Submit" />
</form>

获取PHP文件中的数据,如下所示

<?php
 $count=1;
 foreach ($_FILES['uploads']['tmp_name'] as $file) {
   echo '<li>' . $file . '</li>';

   copy($file, "uploads/" . $count.".jpg");
   echo "Stored in: " . "uploads/" . $count.".jpg";
   $count++;
 }
?>


HTML支持多个标记。你不知道;您不需要更改html代码。只需如上所述更改php代码即可。。。看这篇文章他们在说什么?是的,你可以添加多个属性到文件中,是的,你也可以使用foreach而不是for loopok。。。wufoo.com/html5/attributes/08-multiple.html见本文,他们在说什么@对不起,我已经告诉过你我错了;)基本上,Udit答案是我建议您通过查看PHP如何构建$\u文件数组来“发现”自己的PHP代码。无论如何,
multiple
属性似乎在IE<10上不受支持。这很好。。。您可以添加自己的答案,然后接受它。
<?php
 $count=1;
 foreach ($_FILES['uploads']['tmp_name'] as $file) {
   echo '<li>' . $file . '</li>';

   copy($file, "uploads/" . $count.".jpg");
   echo "Stored in: " . "uploads/" . $count.".jpg";
   $count++;
 }
?>