PHP多文件上传到服务器

PHP多文件上传到服务器,php,forms,Php,Forms,这是我在论坛上的第二个问题。我已经用尽了所有的方法来研究这件事了。我有一个HTML表单将与脚本处理。在这种形式下,用户可以选择上载多达10幅图像。。。。每个图像都有自己的输入字段,如下所示 <form action="upload.php" method="post" enctype="multipart/form-data"> <label for="file">Filename:</label> <input type="file" name="f

这是我在论坛上的第二个问题。我已经用尽了所有的方法来研究这件事了。我有一个HTML表单将与脚本处理。在这种形式下,用户可以选择上载多达10幅图像。。。。每个图像都有自己的输入字段,如下所示

<form action="upload.php" method="post" enctype="multipart/form-data">

<label for="file">Filename:</label>
<input type="file" name="file" id="file" />

<label for="file">Filename:</label>
<input type="file" name="file" id="file" />

<label for="file">Filename:</label>
<input type="file" name="file" id="file" />

<label for="file">Filename:</label>
<input type="file" name="file" id="file" />

<br />
<input type="submit" name="submit" value="Submit" />
</form>

文件名:
文件名:
文件名:
文件名:

php就是这个

$client = $_POST['company'];
$date = date("mdy");
$clientFolder = $client . $date;

mkdir('../../../uploads/' . $clientFolder . '/', 0700);
$folderPath = '../../../uploads/' . $clientFolder . '/';



if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 100000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists($folderPath . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      $folderPath . $_FILES["file"]["name"]);
      echo "Stored in: " . $folderPath . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
$client=$\u POST['company'];
$date=日期(“mdy”);
$clientFolder=$client$日期;
mkdir('../../../uploads/'.$clientFolder'/',0700);
$folderPath='../../../uploads/'$clientFolder.'/';
如果(($_文件[“文件”][“类型”]=“图像/gif”)
||($_文件[“文件”][“类型”]=“图像/jpeg”)
||($_文件[“文件”][“类型”]=“图像/pjpeg”))
&&($_文件[“文件”][“大小”]<100000))
{
如果($\u文件[“文件”][“错误”]>0)
{
回显“返回代码:”.$\u文件[“文件”][“错误”]。“
”; } 其他的 { echo“上传:.”文件[“文件”][“名称”]。“
”; 回显“类型:”.$\u文件[“文件”][“类型”]。“
”; 回显“大小:”($_文件[“文件”][“大小”]/1024)。“Kb
”; 回显“临时文件:”.$\u文件[“文件”][“tmp\u名称”]。“
”; 如果(文件存在($folderPath.$\u文件[“文件”][“名称”])) { echo$\u文件[“文件”][“名称”]。“已存在。”; } 其他的 { 移动上传的文件($文件[“文件”][“tmp文件名”], $folderPath.$_文件[“文件”][“名称]); echo“存储在:“.$folderPath.$\u文件[“文件”][“名称”]; } } } 其他的 { 回显“无效文件”; }
我可以正确上传一个文件,但不能超过一个。我使用了这个教程


我需要通过这些循环吗?或者我需要唯一的名字和id?任何帮助都将不胜感激!我是php新手。。。。不过我得说。。我喜欢它!!!到目前为止

也许您希望以不同的方式命名输入(例如:file1、file2等),然后在PHP中执行以下操作:

$i = 1;
while(isset($_POST['file'.$i])){
    //do upload here
    $i++;
}

之所以只上传1个文件,是因为您将输入命名为“file”(并且没有循环输入)。更改该名称就可以了。

我还没有浏览您的完整代码,但是如果对不同的表单元素使用相同的名称,则除了一个值之外,您将丢失所有值

您可能希望使用一个小例外:添加方括号将使PHP构建一个数组:

<label for="file">Filename:</label>
<input type="file" name="file[]">

<label for="file">Filename:</label>
<input type="file" name="file[]">
文件名:
文件名:
您可以使用
var\u dump()
检查
$\u文件中的确切结构


其次,
id
HTML属性应该包含一个唯一的标识符。您的客户端脚本可能会出现错误。

好的,我正在仔细考虑这一点。我会有Filename:Filename:THEN$I=0;while(isset($\u POST['file'.$i]){//do upload here----???此处的代码从(($\u FILES[“file”][“type”]==“image/gif”)开始,并包含整个语句???////$i++;}确切地说,包括整个
if
语句抱歉,有一个bug,
$i
应该从1开始,而不是从0开始,如果您从文件1命名输入。我已经适当地编辑了我的帖子。这很有趣……我渴望尽可能多地学习。我查看了php手册以检查我们的var_dump()但是我无法思考这个问题。你能再给我一个关于下一步做什么的提示吗?下一步可能就是这一章。