gpt4 book ai didi

ruby-on-rails - Rails remotipart gem,如何绑定(bind)到 ajax "progress"事件

转载 作者:行者123 更新时间:2023-12-04 15:46:23 25 4
gpt4 key购买 nike

我正在尝试实现一个基于 ajax 事件的进度条,我在许多来源中都读到过。我的特殊问题是我不知道如何将我的自定义事件处理程序绑定(bind)到“remotipart”gem 的 ajax 事件中。

这是我想要做的那种甚至 Hook 的描述:

http://warp.byu.edu/site/content/1172

或者

http://www.centurion-project.org/articles/html5-multiple-file-upload-with-progress-bar

我提到的远程 gem :

https://github.com/JangoSteve/remotipart

我正在使用带有 :remote => true 的 rails 3 和 jquery形式。

最佳答案

Remotipart 可能不是答案
这么少的免责声明,我自己没有使用过 Remotipart gem,但我花了很多时间处理文件上传和 Rails。不幸的是,根据我对 Remotipart 的理解,它不支持您正在寻找的进度条用例,因为底层 iFrame 传输策略不支持进度事件。
为了解释,让我们看看我们作为开发人员在浏览器级别可用的不同选项。无论您使用什么服务器端框架或库,这些选项都适用。
无刷新文件上传

  • iFrame 传输
  • 支持插件(Flash/Silverlight/其他)
  • HTML5(文件和 XHR2 API,可选拖放)

  • 选项 1 - iFrame 传输(Remotipart 的策略)
    最古老和最广泛支持(就浏览器而言)的无刷新页面加载策略本质上涉及执行表单的标准提交,但使用隐藏的 iFrame 作为目标。不幸的是,此选项不支持进度事件,请参阅此链接(来自 Remotipart 的自述文件):
    http://www.alfajango.com/blog/ajax-file-uploads-with-the-iframe-method/
    选项 2 - 支持插件
    使用上传模块(通常用 Flash 或 Silverlight 编写)来绕过历史浏览器标准施加的限制。允许多个文件上传和进度事件,但需要用户安装第 3 方浏览器扩展(尽管我们可以假设大多数桌面浏览器都有 Flash)。
    选项 3 - HTML 5(您引用的文章使用的策略)
    因此,像往常一样,HTML 5 是应对所有生活挑战的答案。使用 File 和 XHR2 API,无需任何浏览器扩展即可支持带有进度事件的多文件上传。这是您引用的文章所使用的策略,通常是 future 的最佳实践,但需要注意的是,您可能会看到很多用户的浏览器不支持它。
    我做什么
    我是任何解决方案的忠实拥护者,它可以让您利用最新最好的,同时在旧浏览器上优雅地降级。考虑到这一点,我使用一个名为 Plupload 的库来上传文件:
    http://www.plupload.com/
    Plupload 包含 4 个上传“运行时”,捆绑在一个库中:
  • HTML5(选项 3)
  • 闪存(选项 2)
  • Silverlight(选项 2)
  • HTML4(选项 1)

  • 您配置您的偏好顺序,Plupload JS 运行时将智能地加载用户浏览器支持的第一个。无论使用哪个运行时,库的 JS 部分都非常出色地为您提供了一致的事件进行编程。作为开发人员,让我们专注于构建一个漂亮的 UI,无论使用哪个运行时,它都能“正常工作”。
    当然,如果您一直降级到 HTML4,您将失去获取进度更新的能力,因此您应该为此做好准备。
    希望有帮助!如果您对使用 Plupload 感兴趣,这里有很多很好的文章和答案可以提供帮助。

    关于ruby-on-rails - Rails remotipart gem,如何绑定(bind)到 ajax "progress"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115477/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com