開發筆記之20140124

關於上傳文件的input:

<input type="file" />

以前一直用文件上傳組件實現文件上傳,例如jquery的上傳組建,再比如ExtJs的上傳組件。無論用什麼組件,都是在<input type="file" />標籤的基礎上實現的。瀏覽器爲了保護用戶本地數據安全,在選擇上傳文件後,瀏覽器不會顯示所選文件的真是路徑,而是給出一個fackpath,最初的時候就很納悶,你把真是路徑隱藏了,後臺代碼怎麼能拿到文件路徑來上傳文件呢,後來經過研究才明白,在包含<input type="file" />標籤的form表單提交之後,瀏覽器就會將所選文件上傳之服務器的一個臨時目錄下,後臺程序再用數據流將該臨時文件copy到目標路徑。上傳完成後臨時文件會被刪除。

在 HTML 文檔中 <input type="file"> 標籤每出現一次,一個 FileUpload 對象就會被創建。

該元素包含一個文本輸入字段,用來輸入文件名,還有一個按鈕,用來打開文件選擇對話框以便圖形化選擇文件。

該元素的 value 屬性保存了用戶指定的文件的名稱,但是當包含一個 file-upload 元素的表單被提交的時候,瀏覽器會向服務器發送選中的文件的內容而不僅僅是發送文件名。

爲安全起見,file-upload 元素不允許 HTML 作者或 JavaScript 程序員指定一個默認的文件名。HTML value 屬性被忽略,並且對於此類元素來說,value 屬性是隻讀的,這意味着只有用戶可以輸入一個文件名。當用戶選擇或編輯一個文件名,file-upload 元素觸發 onchange 事件句柄。

您可以通過遍歷表單的 elements[] 數組,或者通過使用 document.getElementById()來訪問 FileUpload 對象。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章