2011-10-31 75 views
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屬性分配控件名稱,但控件名稱是什麼?它爲什麼如此重要?

回答

1

根據W3C規範,名稱屬性分配控件名稱,但控件名稱是什麼?它爲什麼如此重要?

表單控件的名稱控制組成發佈數據或查詢字符串的鍵/值對中的鍵。

不知道控件的名稱,沒有辦法將它轉換成要發送到服務器的數據。

+0

哦......這是有道理的。爲什麼元素的ID不起作用? ID是唯一的,名稱不是 – Hristo

+0

啊,但這就是關鍵。想想複選框。如果您給他們所有相同的名稱,該名稱將在提交的數據中重複多次 - 每個複選框一次,提交數據中的值爲輸入元素上的'value'屬性。然後,一些表單處理器可以自動或基於特定的語法將多個提交轉換爲數組(或類似的特定於語言的構造)。 – Charles