2012-07-21 60 views
3

我正在尋找一些方法來創建一個文件上傳按鈕的排序隊列。使用以下代碼:HTML多文件上傳隊列

<input type = 'file' name = 'file[]' multiple = 'multiple' /> 

現代瀏覽器允許您一次選擇多個文件上傳。但是,如果再次單擊該按鈕並選擇更多文件(例如從不同的文件夾中刪除),則會刪除當前選定的文件。有沒有辦法讓新選擇的文件不覆蓋舊的文件?

+0

當你看到它時,它往往是通過flash來完成的,因爲正常的文件輸入只允許你選擇一個。 – Undefined 2012-07-21 23:12:33

+0

不一定。它可以使用XHR和iFrames(在舊版瀏覽器中)完成。看到我的答案。 – 2012-07-21 23:17:35

回答

0

是的,有一種方法我使用。

聽這個;當用戶選擇文件時,用CSS隱藏該輸入並生成另一個具有不同名稱的輸入。您需要知道其中有多少人,因爲這樣的原因,您可以添加初始值爲1的隱藏輸入,並且您每次都可以+1。

希望這會有所幫助。

+0

與此一起工作,因爲這是我的工作。 – Lukas 2012-07-21 23:56:56

1

雖然我不確定HTML5,但以前的JS版本不會讓你這樣做,出於安全原因。您不能更改用戶選擇上傳的文件,否則您可以更改文件路徑並上傳您需要的任何文件(例如,包括密碼文件)。

對此的一個解決方案是具有多個文件輸入,而不是單個文件輸入多個文件。在用戶選擇要上傳的文件時動態添加它們。例如,您可以將onchange偵聽器添加到最新的文件輸入,並且當用戶選擇文件時,刪除偵聽器,然後添加另一個文件輸入(將onchange偵聽器附加到此新文件輸入)。當然,這些輸入需要一些增量命名方案,而你的服務器需要處理最終的上傳。