【发布时间】:2011-01-12 19:41:04
【问题描述】:
我一直在开发一个弹性上传器,用户可以在其中选择多个文件。
当文件在队列中上传时(一次一个),它工作正常,但是一旦我尝试让它一次上传 2 个文件,我就会遇到问题。
文件似乎经常被锁定,要么保持在 1%,直到所有其他文件都上传,要么根本不完整。一次上传的文件不会超过一个。
在 Flex 中一次对多个文件调用 .upload 是否存在问题?
【问题讨论】:
标签: apache-flex flash file uploader
我一直在开发一个弹性上传器,用户可以在其中选择多个文件。
当文件在队列中上传时(一次一个),它工作正常,但是一旦我尝试让它一次上传 2 个文件,我就会遇到问题。
文件似乎经常被锁定,要么保持在 1%,直到所有其他文件都上传,要么根本不完整。一次上传的文件不会超过一个。
在 Flex 中一次对多个文件调用 .upload 是否存在问题?
【问题讨论】:
标签: apache-flex flash file uploader
将上传脚本设置为上传类可能会有所帮助.. 我的意思是,如果您的上传脚本是 php 或 asp 中的,则创建该脚本的类,以便每个请求对应于每个唯一对象,我们可以同时上传文件...
【讨论】:
问题在于 Flex 连接到后端的模型。使用 HttpService 和 Remoting,Flex 客户端打开到服务器的 Http 连接。如果您连接到服务器上的相同 Servlet/服务,它将使用相同的连接并且可能会遇到问题。
对于一个简单的测试,尝试创建同一个 servlet 的两个实例并将上传请求发送到 2 个 servlet 以进行 2 次上传。它应该可以工作。
【讨论】:
另一种模拟多任务处理的方法是按块下载/上传,并使用 callLater() 进行顺序执行。 这将是早期 Windows 协作式多任务的复制
【讨论】:
不幸的是,每个主机的浏览器限制为 2 个(取决于浏览器)活动连接。这意味着一次只有 2 个上传处于活动状态,而另一个将被排队。现在这通常不会成为问题,但是当上传的文件非常大时,其他上传会超时,即使它们没有开始。有一种解决方法,即每 2 次上传(upl1.mydomain.com、upl2.mydomain.com)使用子域,我没有进行测试,但它应该可以解决问题。
参考:http://anirudhs.chaosnet.org/blog/2008.06.17.html 和 http://www.ajaxperformance.com/2006/12/18/circumventing-browser-connection-limits-for-fun-and-profit/(实际上您可以从第一个链接获得)。
此外,您可能无法在 Flash 中对上传进行排队,因为安全模型需要通过鼠标单击来调用(FileReference 的)上传方法。
【讨论】: