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

时间:2011-01-17 11:02:53

标签: javascript ajax html5

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

  1. 将文件编码为multipart:仅在支持文件阅读器时才能完成。
  2. 使用XMLHTTP2(AJAX)规范方法发送二进制数据:新方法send(Blob/File)能够通过网络发送二进制数据。
  3. FormData对象:使用XMLHTTP(AJAX) send(FormData)方法。
  4. 现在,对于跨浏览器问题和功能检测,下面的代码段很简单,

    if(typeof FileReader == "undefined")
    

    但是我不知道如何确定当前浏览器中的AJAX的send()方法是否支持send(FormData) or send(Blob/File)方法实现。怎么找到它?这里有Object.property技巧吗?还是别的什么?

    谢谢,

1 个答案:

答案 0 :(得分:2)

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

最后我听说这仍然是sorted out

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

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

if (FileReader){
  // It's supported
}

您还可以查看:

if (window.URL){
  //
}

替代方案。