有没有一种方法可以在不使用Flash或Silverlight的情况下,仅使用巧妙利用的表单和JavaScript来排队文件上传?请注意,上传应该是异步执行的。
通过“排队”上传,我指的是如果用户尝试上传多个文件,则它们不应同时传输,而应该一个接一个地在单个HTTP连接中传输。
有没有一种方法可以在不使用Flash或Silverlight的情况下,仅使用巧妙利用的表单和JavaScript来排队文件上传?请注意,上传应该是异步执行的。
通过“排队”上传,我指的是如果用户尝试上传多个文件,则它们不应同时传输,而应该一个接一个地在单个HTTP连接中传输。
由于规范的限制,我不认为可以在单个HTTP连接上完成此操作。
但是,您可以通过将<input>
字段放置在单独的表单中(无论是使用HTML还是JavaScript),并按顺序提交它们来实现几乎相同的行为。
将它们的目标放在一个<iframe>
中,并使用iframe.onload
事件触发列表中的下一个表单。
其他说明:
我之前见过一种选项,虽然我没有链接或示例,但可以使用iframe。基本上,文件被提交到iframe中,JavaScript会监视iframe何时重新加载,然后提交下一个文件。这不是很好看,我尝试过,但无法在各种浏览器(包括IE6)上运行。
总体来看,需要做的事情:
这是我现在能想到的简单逻辑[回家后要编码]。
有一种简单高效的方式可以使用XMLHttpRequest异步上传文件:请参考https://developer.mozilla.org/en/using_xmlhttprequest中的“在Firefox 3.5及更高版本中”部分。使用此方法,您可以异步上传文件,并获取上传进度百分比。在Firefox 3.6及更高版本中,您还可以异步上传多个文件。我正在编写一个JS函数以更简单的方式完成此操作,完成后我会发布它。