我正在创建一个Web应用程序,并且一直在寻找除iframe和表单支持之外的异步文件上传解决方案。
我完全愿意排除除IE9 +之外的所有内容。 IE往往是我最麻烦的浏览器。
我有一张桌子,我希望能够点击链接,显示文件对话框,然后在选择后立即上传文件。没有页面刷新。
更具体地说,我试图找出Trello文件上传的方式。在查看了javascript之后,我发现它们将文件输入绑定到一个on change listener,但之后我看不到它们在做什么。我的印象是他们使用带有node.js的websockets来传输数据,但经过一些研究后,大多数人都说websockets不会对此有好处。除了9和10之外,Trello会阻止所有版本的IE,因此我研究了HTML5文件上传,认为这可能是一个解决方案。但是,经过一些研究,IE9不支持HTML5文件API。
所以最后我正在寻找一些上传文件而不使用iframe和表单解决方案的方法。有人可以列出我可以使用的可能方法吗?
我使用Rails作为后端,Ember.js作为前端。
答案 0 :(得分:0)
如果浏览器不支持File API和XMLHttpRequest级别2,除了还原为隐藏的iframe方法之外,没有其他方式以async /“ajaxy”方式上传文件。当然,您可以使用Flash或Java,但这些(特别是Java)对我来说都不是一个好的解决方案。
无论浏览器如何,如果要为用户提供文件选择器,都必须在页面上包含文件输入元素。您所说的onchange监听器对于确定用户何时实际选择了一个或多个文件至关重要。在支持File API的浏览器中,您还可以允许用户将要上传的文件拖放到页面上。仅此行为不需要文件输入元素。
IE9及更早版本不支持File API。
我对这个领域非常熟悉,因为我维护了一个相当受欢迎的仅限javascript的上传库:Fine Uploader。