javascript - 为什么 form.append 不附加多个文件?
问题描述
<html>
<script src = "/jquery.js"></script>
<form>
Image here:<br>
<input type = "file" id = "image" multiple><br>
<input type = "button" id = "submit" value = "submit">
</form>
</html>
<script>
$("#submit").click(function(){
var form = new FormData();
var filescount = $("#image")[0].files.length;
for (var i = 0;i<=(filescount-1);i++){
form.append( "finalform" , $("#image")[0].files[i] );
}
$.post({
url:"/test.php",
processData: false,
contentType: false,
data:form,
success:function(data){
alert(data);
}
});
});
</script>
<?php
var_dump($_FILES);
?>
我的 JS 正在尝试使用 .files.length 从 $("#image")[0] 输入中选择文件的数量。我已经提醒了这个值,它正在计算我选择的正确文件数。
然后使用 for 循环,使用上述计数作为索引,执行 form.append("finalform" , $("#image")[0].files[i] )
但是,当我将它发送到 PHP 和 var_dump[$_FILES](在 JS 中被提醒)时,它只显示最后选择的图像。例如,如果我选择 10 个图像,files.length 计数为 10。但是当 var_dump 被警告时,它只显示最后选择的文件,即文件 10.png。
知道为什么我的表单数据似乎没有通过其他 9 张图像发送吗?
解决方案
为了使 php 能够将您的$_FILES
字段作为数组读取,您需要"[]"
在其名称末尾附加:
form.append( "finalform[]" , $("#image")[0].files[i] );
推荐阅读
- r - 从美国社区调查 (ACS) 2013-2017 摘要文件中的所有表格中下载一个州所有人口普查区块组的所有变量
- javascript - iOS WebKit - 判断一个WebView是否已经完全加载了JS内容
- codeigniter - CodeIgniter 中的 if 语句和管理员权限
- javascript - 如何在反应式表单字段中使用管道?
- c - C 编程练习:数组中的素数,使用 for 循环打印
- php - 在 mysql 中加入表以创建 JSON 的正确方法
- recursion - 如何在所有情况下使这个 F# 函数尾递归?
- c - 在文件中拆分字符串并将值保存在数组中打印错误的输出
- javascript - 一定时间后从 CanvasJS 图表中删除点
- c# - 在这种情况下,如何通过将对象添加到字典来实现多态性?