2009-12-11 61 views
3

我基本上擁有一個表格,用戶可以填寫並在其中附加文件。它實際上等同於gmail:當你仍然在表單中輸入信息時發送文件,當你點擊最後的提交按鈕時,它會等待文件被全部傳輸並提交最終的字段。與ExtJS異步發佈文件的最佳方式

我的問題是在這個過程中提交這些文件。我的第一個想法是首先爲每個添加的文件創建一個新的FormPanel,以便能夠使用POST Ext.Ajax.request發送它們。不幸的是,我們不能在表單中嵌入一個表單(有些時候我認爲ExtJS會以不同的方式處理這個問題,但我試過了,而不是)。

我在互聯網上看到過一些使用Flash來控制的控件,但這不是我想要的。我想要像Google一樣做這件事!除了有一個進度條,這是一個很好的功能,但它不是強制性的:) 謝謝你的幫助!

+0

gmail是否使用flash上​​傳器? – 2009-12-11 04:55:29

+0

那麼,你的問題是每個文件是否同步上傳?你想每個上傳異步發生? – Upperstage 2009-12-11 18:58:15

+0

爲什麼你需要額外的表單來發出AJAX請求?只需使用一組名稱即可。 – Thevs 2009-12-12 14:56:11

回答

2

簡短回答:請勿嵌套表格,並排(甚至動態創建)。

長:

當你想想看,你正在做的事情,這不是一個原子操作。 上傳文件和在表單上發佈數據(技術上講)是2個無關的事務。 您提供它們之間的事務性上下文,就像gmail所做的那樣:您創建一個「草稿」對象,上傳表示它們屬於該草稿的文件,並最終發佈剩餘的表單數據並將草稿完成爲完全構建的對象。

當然,你必須對所有這些進行管理,但這不是問題的關鍵。

重點是:根據我上面描述的「原子性」對UI進行分區。 不要將「文件上傳」和「最終提交」操作混合到同一個HTML Form/Ext FormPanel中。 (您仍然可以在視覺上爲用戶製作相同的概念界面)。

您可以使用專門創建的表單對文件上傳進行「Ext.Ajax.request」。

你可以查看Saki的例子here

希望這有助於:-)

+0

正是我所做的,它的作用像一個魅力:)謝謝! – TigrouMeow 2009-12-14 04:20:01