文件上载使用进度条进行服务器轮询

时间:2011-10-18 07:57:55

标签: jquery file upload progress-bar

这与要求如何上传文件和显示进度条的问题不重复。我对基础知识的理解是:

  1. 我们有一个表单将给定的输入文件发布到给定的URL。
  2. 单击提交按钮后,我们将间隔设置为每秒运行一次Javascript方法,它使用AJAX轮询服务器以获取此下载的状态。
  3. 我这里唯一的困境是我尝试了这种方法,但是当我查看FireBug控制台时,我可以看到所有这些jQuery AJAX调用。我见过其他人的实现,你在FireBug中看不到任何东西>净> XHR。

    有没有人有任何想法如何实现?

    非常感谢任何建议。

    干杯, MOSH

    PS:要强调的是,我对使用Flash做这件事不感兴趣。

4 个答案:

答案 0 :(得分:2)

不像看起来那么简单

我认为这会涉及一些低级别的Web服务器编程,因为在代码执行之前正在处理(上载)文件。这只是意味着您无法深入了解Web服务器的内部文件上传过程以进行轮询/调查...

如果您的方案实际上应该如下:

  1. 选择文件
  2. 提交(开始上传)
  3. Ajax民意调查
  4. 那么你在这里遇到了几个问题:

    • 如果您的Ajax请求应该从同一页面运行,这将无效,因为页面已经卸载(表单已经被发送),这意味着脚本可能已被停止。
    • 如果你的表单上有不同iframe的文件上传和从父页面上传的轮询,你必须实现一些低级服务器代码来提供我上面突出显示的内容。 / LI>

    客户端插件

    这就是为什么使用像Uploadify这样的插件在客户端更容易做到这一点,这些插件也可以使用Flash来获取有关服务器上传进度的信息。

答案 1 :(得分:1)

答案 2 :(得分:1)

也许这个页面可以帮助你:jquery ajax uploader plugin with progress bar。或者您可以自己搜索替代方案。

答案 3 :(得分:0)

这似乎实际上是一个问题。

  • 我建议的一个改进是使用Socket.io库,它使用websockets,并通过XHR或Flash通过后退来进行长轮询。它至少会提供一种最小化轮询开销的结构化方法。

  • 当出现“隐藏请求”时,他们可能使用与XHR不同的方法,如果你没有看到XHR,他们可能没有做XHR。 (这很明显)