我想用 AJAX 上传文件。在过去,我通过使用神奇的jQuery 表单插件来实现这一点,并且效果很好。目前我正在构建一个 Rails 应用程序并尝试做一些“Rails 方式”的事情,所以我使用 Form Helper 和回形针 gem 来添加文件附件。
rails文档警告表单助手不适用于 AJAX 文件上传:
与其他表单不同,制作异步文件上传表单不像为 form_for 提供 remote: true 那样简单。对于 Ajax 表单,序列化是由在浏览器中运行的 JavaScript 完成的,由于 JavaScript 无法从您的硬盘读取文件,因此无法上传文件。最常见的解决方法是使用不可见的 iframe 作为表单提交的目标。
显然没有现成的解决方案。所以我想知道最聪明的做法是什么。好像我有几个选择:
- 使用表单助手和 iframe 技巧。
- 使用表单助手 + 加载 jQuery 表单插件来提交文件(不确定这是否会与 Rails 的真实性令牌等一起使用)
- 使用表单助手 + 回形针 + [其他一些 gem] 来扩展它的功能以允许 AJAX 表单提交。
这三个似乎都是可能的。我对#3知之甚少,特别是[其他一些宝石]部分。我发现了两个类似的问题(this和this),其中提到了 Pic-Upload 的一个名为 Uploadify 的分支,但它们都有 2 年的历史并处理 Rails 2 和 3(并且 Uploadify 多年来一直没有更新)。因此,鉴于发生了多大变化,我认为这确实是一个全新的问题:
在 Rails 4 中使用 AJAX 上传文件的最佳方式是什么?