2

所以我一直在寻找在我的站点中实现的解决方案,允许上传多个文件和大文件(> 2 GB),而不使用任何插件、桌面客户端等。我也有支持的要求早在 IE 7 的浏览器。FineUploader 似乎完全符合要求,但我一直试图弄清楚的一个方面是它如何使用 iframe 来支持非 HTML5 浏览器?它是否基本上提供 HTML 内容,所以它仍然允许用户上传文件,但有遗留限制(一次一个文件,在上传之前无法读取文件大小等)?我在非 HTML5 浏览器中丢失了 FineUploader 的哪些功能?

谢谢,斯塔斯

4

1 回答 1

1

我是 Fine Uploader 的维护者,我会回答您的问题。

对于不支持 File API 的浏览器(IE9 和更早版本,Android 2.3.x),Fine Uploader 必须依靠一个众所周知的“技巧”来允许“ajax”上传。在这些浏览器中,您必须提交一个包含文件输入元素(每个文件一个)的表单。Fine Uploader 创建一个隐藏的 iframe,其中包含相关文件的表单和文件输入。为每个选定的文件创建一个单独的 iframe。Fine Uploader 然后在需要上传相关文件时提交表单。当接收到服务器响应时,来自服务器的响应文本被加载到此 iframe 中,并且库解析此响应(无论浏览器如何,它都必须是有效的 JSON 响应)。

非文件 API 浏览器存在以下限制:

  • 您一次只能选择一个文件(每个“选择文件”对话框一个)。这是因为这些浏览器都不支持multiple文件输入元素的属性。
  • 不支持拖放文件。此功能取决于文件 API 支持。
  • 进度条不会出现,因为在不支持 File API 的浏览器中没有简单的方法来确定文件的上传进度。将来可能会努力允许进行进度计算,例如记录的约定导致定期 GET 请求检查进度,或支持 nginx 或 apache 中的 UploadProgress 模块。
  • 客户端文件大小信息不可用。因此,不会启用与文件大小相关或依赖于文件大小的任何功能。除非浏览器支持 File API,否则此信息根本不可用。
  • 未启用分块和自动恢复功能,因为这显式依赖于文件 API 支持。

幸运的是,所有“现代”浏览器,包括 IE10,都支持 File API。

希望这可以帮助。

于 2013-05-19T03:20:55.280 回答