0
所以我遇到了表单/隐藏iframe文件上传技术的问题,并花了好几天的时间试图找出为什么文件不会上传,直到最后找出问题所在。HTML窗体和控件名称
当我建立动态的形式,我插入的文件输入元素形式的孩子:
<input type="file" id="file-select-input" />
...我有这样的事情:
<form enctype="multipart/form-data" id="file-select-form" target="select-file-iframe" method="POST" action="/upload/">
<div id="file-select-button" class="">
<input type="file" id="file-select-input" />
</div>
</form>
<iframe style="display: none" id="select-file-iframe" src="javascript:false;" name="select-file-iframe"></iframe>
它事实证明,当我提交上述表格时,输入文件信息未被发送。原因是,我没有在文件输入元素上指定的name
属性。所以当我改变它到这个:
<input type="file" id="file-select-input" name="file" />
...事情奏效。
那么为什么需要为要上传的文件设置文件输入元素的name
属性?根据W3C规范,name
属性分配控件名称,但控件名称是什么?它为什么如此重要?
哦......这是有道理的。为什么元素的ID不起作用? ID是唯一的,名称不是 – Hristo
啊,但这就是关键。想想复选框。如果您给他们所有相同的名称,该名称将在提交的数据中重复多次 - 每个复选框一次,提交数据中的值为输入元素上的'value'属性。然后,一些表单处理器可以自动或基于特定的语法将多个提交转换为数组(或类似的特定于语言的构造)。 – Charles