服务器端(php)上载的文件数与客户端不同
HTML格式:服务器端(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
<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端提供一个数组,因为它需要一个三维数组来访问所有上传的文件