有没有办法在不使用Flash或Silverlight的情况下排队文件上传,只需使用巧妙使用的表单和JavaScript?请注意,上传应该异步执行。
通过“排队”上传,我的意思是,如果用户尝试上传多个文件,则不应同时传输它们,而应在一个HTTP连接中一次传输一个。
答案 0 :(得分:2)
我有良好的权威,Uploadify非常好。而且,它本身支持队列。一个简单的例子,它假设你已经创建了一个id为“foo”的表单“file”元素和一个用作id为“queue”的队列的元素。有关详细信息,请参阅docs。
$("foo").uploadify({
'uploader' : 'uploadify.swf',
'script' : 'uploadify.php',
'cancelImg' : 'cancel.png',
'auto' : true,
'folder' : '/uploads',
'queue' : "queue"
});
答案 1 :(得分:2)
由于规范的限制,我认为不可能在单个HTTP连接上执行此操作。
但是,您可以通过将<input>
字段放在单独的表单(使用HTML或JavaScript)并按顺序提交它们来获得几乎相同的行为。
将目标放在<iframe>
上并使用iframe.onload
事件触发列表中的下一个表单。
附加说明:
答案 2 :(得分:1)
我之前看过的一个选项,虽然我没有链接或示例,但使用的是iframe。基本上,文件被提交到iframe和JavaScript监视,以查看iframe何时重新加载,然后提交下一个iframe。它并不漂亮,我认为我尝试过,但无法让它在浏览器中运行(我当时需要它,包括IE6)。
答案 3 :(得分:0)
广泛地看待它,需要做些什么:
这是我现在可以想到的简单逻辑[当我回到家时必须编码]。
答案 4 :(得分:0)
如果您正在寻找.Net,更具体地说是Asp.Net MVC解决方案,请看一下这篇文章http://dimebrain.com/2010/01/large-or-asynchronous-file-uploads-in-asp-net-mvc.html。我把它标记为可供参考。
答案 5 :(得分:0)
这个jquery插件声称没有使用swf http://valums.com/ajax-upload/
答案 6 :(得分:0)
有一种简单有效的方法可以使用xmlhttprequest异步上传文件:请参阅“在Firefox 3.5及更高版本”部分中的https://developer.mozilla.org/en/using_xmlhttprequest。有了这个,您可以上传文件asyncronysly获取上传的进度百分比。使用firefox 3.6及更高版本,您还可以上传asyncronyly多个文件。我正在以更简单的方式制作一个js函数,完成后我会发布它。
答案 7 :(得分:0)
在最近的过去,我写了一个jQuery插件,可以让你做这样的事情。我无法发布代码,但我可以描述它是如何工作的。如果它没有意义,请告诉我,因为它已经有一段时间了。
有一组上传表单元素。选择文件后,它会发布到隐藏的iFrame,其内容(通过base64)被复制到隐藏的表单字段中。然后,当提交最终表单时,隐藏表单字段的内容用于获取文件信息。
埃里克