2009-12-11 52 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

相关问题