1

我已经使用 xHR2 和 File api 在 HTML5 中为内部项目实现了 AJAX 文件上传器。我们只需要支持 Firefox/Safari/Chrome。我使用以下链接作为参考

  1. http://www.html5rocks.com/en/tutorials/file/xhr2/
  2. http://www.html5rocks.com/en/tutorials/dnd/basics/
  3. https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications

现在我需要支持 Internet Explorer 10 及以下版本。IE 10 支持 XHR2 但缺少文件 API 支持。有没有办法检测这些 API 不受支持?如果我可以检测到这些 API 不被支持,那么如何实现 IE 的 AJAX 文件上传?

我使用的是 Google Closure JS 库而不是 jQuery 或任何其他库。库的选择不能更改。请在响应中使用 jQuery 或其他一些效果。但是,任何使用 jQuery 的代码片段都可以。

4

3 回答 3

3

检测 File API 是否存在的最简单方法可能是

typeof File

在支持 File API 的浏览器中,它应该返回一个对象或函数 - Internet Explorer 返回undefined

至于如何回退并使其适用于所有用户

我使用了这个工具https://github.com/valums/ajax-upload,它创建了一个 iframe 并将上传内容发布到 iframe 并模拟 AJAX 文件上传 - 它全是纯 JavaScript,不需要库,并且一直支持到 IE6

于 2013-01-04T08:14:12.567 回答
2

最近我一直在研究与谷歌闭包库一起使用的文件上传器。我发现Fine-uploader库是一个好的开始。它不是用闭包库编写的,但它为我提供了基本准则:如果支持,则使用 xhr 上传文件,否则回退以形成帖子到隐藏的 iframe。

在我的代码中,我实现了两个类:一个使用 aXMLHttpRequest上传文件,另一个使用goog.net.IframeIo'ssendFromForm方法上传文件。

于 2013-01-05T02:24:33.077 回答
0

查看goog.net.iframeIoGoogle Closure Library 中的类。这将从表单中获取文件输入元素并将其发布到 iFrame,从而提供相当于 AJAX 体验,即使它不在实际的 XHR 中也是如此。

以下是关于如何实现它的 Google 文档的链接:

https://code.google.com/p/closure-library/source/browse/closure/goog/net/iframeio.js#48

于 2013-01-04T19:23:13.570 回答