2009-12-14 73 views

回答

55

是的,你可以使用form.submit()函數。添加一個onchange監聽器上的文件輸入,並將其鏈接到form.submit函數,就像這樣:

<form action="upload.php" method="post"> 
<input type="file" onchange="this.form.submit()" name="myFile"/> 
</form> 
1

我不相信你能做到這一點。由於存在濫用的可能性,瀏覽器對於文件上傳字段的操作非常非常嚴格。如果用戶不小心選擇了私人文件,他們不希望它立即開始將該文件上傳到隨機服務器。

+0

不是真的,我只是在我的答案中測試了代碼,它起作用(至少在Firefox中)。 – Marius 2009-12-14 23:17:00

+1

奇怪的,類似的代碼不在這裏工作。進一步檢查... – ceejayoz 2009-12-14 23:23:33

+4

非常真實...這種解決方案不適用於所有瀏覽器 – 2012-03-16 15:12:22

6

是的,你可以添加以下到onchange事件的文件輸入:

<input type='file' .... onchange='this.form.submit();'> 

這會在用戶選擇文件後立即提交表單。 但是,用戶在提交之前無法更正錯誤的選擇 - 請務必檢查這是否明智。

-1

我不確定在HTML表單中這樣做的限制是什麼。

但是,您可以使用Flash來做到這一點。 Gmail做到這一點 - 當我點擊「附加文件」時,系統會收到一個文件瀏覽對話框提示,當我確定該對話框時立即開始上傳,並且還提供了一個進度條。

谷歌搜索「Flash uploader」會給你很多選擇,但我沒有任何經驗。

2

此解決方案適用於我。

<form enctype="multipart/form-data" method="POST" action="/upload"> 
    <input id="myfilefield" type="file" name="file"> 
    <input type="submit"> 
</form> 

 

document.getElementById('myfilefield').onchange = function() { 
    this.form.submit(); 
}; 

順便說一句,你不需要使用閃光燈。 Gmail通過XHR Level 2執行此操作。

相關問題