浏览器中的HTML5文件上传功能检测

Ani*_*mde 7 javascript ajax html5

我正在尝试使用HTML5功能上传文件.根据调查我发现有3种不同的上传文件的方式,

  1. 通过将文件编码为多部分:仅在支持文件读取器时才会执行此操作.
  2. 使用XMLHTTP2(AJAX)规范方法发送二进制数据:新方法send(Blob/File)能够通过线路发送二进制数据.
  3. FormData对象:使用XMLHTTP(AJAX)发送(FormData)方法.

现在,对于跨浏览器问题和功能检测,下面的代码段很简单,

if(typeof FileReader == "undefined")
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何找出当前浏览器中的AJAX的send()方法是支持send(FormData)还是send(Blob/File)方法实现.怎么找到它?这里有Object.property技巧吗?或者不同的东西?

谢谢,

Kea*_*her 2

要处理二进制数据,您需要使用 WebSocket。这是新的HTML5 规范的一部分。但有一个问题。截至 2010 年 12 月中旬,由于缓存中毒漏洞,WebSocket 在所有主要浏览器中都被禁用。

上次我听说这件事仍在解决中

要在通过 WebSockets 发送文件之前上传文件,您应该使用每个浏览器的最新版本都支持的FileReader API(据我所知)。

要检查 FileReader 是否受支持,您应该进行如下测试:

if (FileReader){
  // It's supported
}
Run Code Online (Sandbox Code Playgroud)

您还可以检查:

if (window.URL){
  //
}
Run Code Online (Sandbox Code Playgroud)

作为替代方案。