0

客观的

我正在创建一个 Web 应用程序,并且一直在寻找 iframe 和表单支持以外的异步文件上传解决方案。

浏览器支持

我完全愿意排除除 IE9+ 之外的所有内容。IE往往是我最麻烦的浏览器。

目标

我有一张桌子,我希望能够点击一个链接,显示一个文件对话框,然后在选择后立即上传文件。没有页面刷新。

更具体地说,我试图弄清楚Trello是如何上传文件的。在查看了 javascript 之后,我发现他们将文件输入绑定到了一个 on change 监听器,但是之后我看不到他们在做什么。我的印象是他们使用 websockets 和 node.js 来传输数据,但是在做了一些研究之后,大多数人都说 websockets 不适合那个。Trello 阻止除 9 和 10 之外的所有 IE 版本,因此我研究了 HTML5 文件上传,认为这可能是一个解决方案。但是,经过一番研究,IE9 不支持 HTML5 File API。

问题

所以最后我正在寻找一些没有 iframe 和表单解决方案的上传文件的方法。有人可以列出我可以使用的可能方法吗?

边注

我将 Rails 用于后端,将 Ember.js 用于前端。

4

1 回答 1

0

如果浏览器不支持 File API 和 XMLHttpRequest level 2,除了恢复到隐藏的 iframe 方法之外,没有其他方法可以异步/“ajaxy”方式上传文件。当然,您可以使用 Flash 或 Java,但这些(尤其是 Java)对我来说都不是一个好的解决方案。

无论使用哪种浏览器,如果要为用户提供文件选择器,都必须在页面上包含文件输入元素。您所说的 onchange 侦听器对于确定用户何时实际选择了一个或多个文件至关重要。在支持 File API 的浏览器中,您还可以允许用户将他们希望上传的文件拖放到您的页面上。仅此行为不需要文件输入元素。

IE9 及更早版本不支持文件 API。

我对这个领域非常熟悉,因为我维护了一个相当流行的纯 JavaScript 上传库:Fine Uploader

于 2013-06-24T03:07:16.570 回答