我目前有一个带有单个文件上传输入的表单。
我试过的原始表单输入
<input type="file" name="userFile[]" />
and
<input type="file" name="userFile1" />
我还有一个使用
生成更多输入字段的链接如果尝试过以下方法:
a)
counter = 1;
function addInput(){
counter ++;
$('#divName').append('<input type="file" name="userFile[]" ' />);
}
b)
var counter = 1;
function addInput(){
counter++;
$('#divName').append('<input type="file" name="userFile'+counter+'" ' />);
}
我不认为这个问题与JS相关,但我认为可能是服务器。
问题在于,当我最后按下“提交”按钮并将文件传递到服务器并尝试访问所有$_FILES['userFile']['name']
/ ['size']
/ ['error']
等值时,可以回显/打印第一个原始表单上载值。我尝试上传大尺寸文件进行测试我知道所有文件都上传了,但一旦到达服务器端,只能访问一个。
任何人都可以告诉我可能发生的事情吗? 我希望我解释了这一点,如果你需要澄清,请问我任何问题。
更多信息
经过一些测试之后,看起来Jquery可能就是问题了。 在上述复制字段的方法中,只有在上传文件时才能识别第一个原始输入。但是,如果我创建三个原始输入字段并正常上传它们,那么$_FILES
数组中的所有文件都会被识别为应该存在。
那么为什么jQuery生成的字段没有在表单中发布?
答案 0 :(得分:1)
我找到了这篇文章然后找到了答案,这很简单很遗憾。
jQuery not posting all inputs of a form after the .append()
我只需要移动&lt; form&gt;表格外的元素与我的输入,然后它都工作。 我不确定为什么,但它很有趣。 感谢那些帮助过的人。
答案 1 :(得分:0)
我遇到了同样的问题..我所有的努力都是徒劳的,但最后我在PHP手册上找到了一个很好的说明。这很简单但很适合我...
“如果您使用表格显示您的内容,则多次上传可能无效 当
<form>
元素<table>
元素时,表单输入。在这 case 只会上传第一个文件。将
<form>
元素放在元素之外,以使其正常工作。“
请点击此链接查看完整备注,有一个功能可以以易于使用的方式重新排列多个上传文件阵列。