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