服务器端(php)上载的文件数与客户端不同

服务器端(php)上载的文件数与客户端不同,php,ajax,Php,Ajax,HTML格式: <form enctype="multipart/form-data" method="post" name="fileinfo" id="myForm"> <label>Your email address:</label> <input type="email" autocomplete="on" autofocus id="userid" name="userid" placeholder="email" required

HTML格式:

<form enctype="multipart/form-data" method="post" name="fileinfo" id="myForm">

  <label>Your email address:</label>
  <input type="email" autocomplete="on" autofocus id="userid" name="userid" placeholder="email" required size="32" maxlength="64" /><br />

  <label>File to stash:</label>
  <input type="file" name="fileToUpload[]" id="fileToUpload[]" required />

  <input type="file" name="fileToUpload[]" id="fileToUpload[]" required />

  <input type="submit" id="save" value="Stash the file!" />
</form>

您的电子邮件地址:

要隐藏的文件:
据我所知,我已经使用了formdata,但我不确定我是否做对了。 Javascript代码:

<script type="text/javascript">
    $('#save').click(function(event){
        event.preventDefault();
        var fd = new FormData(document.querySelector("form"));

        var ins = document.getElementById('fileToUpload[]').files.length;
        console.log(ins);
        if (ins != 0) {
            fd.append("fileToUpload[][]", document.getElementById('fileToUpload[]').files[0]);
            fd.append("Email", $('#userid').val());

            for (var pair of fd.entries()) {
                console.log(pair[0]+ ', ' + pair[1]); 
            }

            $.ajax({
              url: "upload.php",
              type: "POST",
              data: fd,
              processData: false,
              contentType: false,
              success: function(data){
                console.log(data);
              }
            });
        }
        else{
            console.log("Nothing attached ");
        }


    })
</script>

$(“#保存”)。单击(函数(事件){
event.preventDefault();
var fd=新表单数据(document.querySelector(“表单”));
var ins=document.getElementById('fileToUpload[]).files.length;
控制台登录;
如果(ins!=0){
fd.append(“fileToUpload[][]”,document.getElementById('fileToUpload[]')).files[0]);
fd.append(“Email”,$('#userid').val();
for(fd.entries()的变量对){
log(对[0]+','+对[1]);
}
$.ajax({
url:“upload.php”,
类型:“POST”,
数据:fd,
processData:false,
contentType:false,
成功:功能(数据){
控制台日志(数据);
}
});
}
否则{
控制台日志(“未附加任何内容”);
}
})
在upload.php文件中,我只是想打印名称。但我总是得到计数值为3,无论前端上传的文件数是多少,即使我根本不上传任何文件,它也会给出值2

 <?php
     $count = count($_FILES['fileToUpload']['name']);
echo $count;
for ($i = 0; $i < $count; $i++) {
  echo 'Name: '.$_FILES['fileToUpload']['name'][$i].'\r\n';
}


?>


这是我第一次这样做。我不知道我哪里出错了。提前谢谢。

让我好奇的一件事是
id=“fileToUpload[]”
。我知道我们可以名义上做到这一点,但我怀疑它作为id是否有效。如果我只使用fileToUpload,那么它会在php端提供一个数组,因为它需要一个三维数组来访问所有上传的文件。一件让我好奇的事是
id=“fileToUpload[]”
。我知道我们可以名义上做到这一点,但我怀疑它作为id是否有效。如果我只使用fileToUpload,那么它会在php端提供一个数组,因为它需要一个三维数组来访问所有上传的文件