如何检查浏览器是否支持HTML5文件上传(FormData对象)?

时间:2011-09-03 23:19:37

标签: javascript file-upload safari html5-video opera

如何检查浏览器是否支持HTML5文件上传(FormData对象)?

var fd = new FormData();

根据此post的答案,但代码未返回有关浏览器的正确答案,

window.onload = function()
{
 if (!!window.FileReader)
 {
  alert('supported');
 }
 else
 {
  alert('not supported');
 }
}


Firefox - supported
Chrome - supported
Opera - supported
Safari - not supported
IE9 - not supported

但正确的浏览器支持应该是,

Firefox - supported
Chrome - supported
Opera - not supported
Safari - supported
IE9 - not supported

我已经在 Opera 上测试了html 5文件上传,并且肯定是

我确信 safari 支持html 5文件上传。

7 个答案:

答案 0 :(得分:70)

尝试if( window.FormData === undefined )if( window.FormData !== undefined )

答案 1 :(得分:11)

http://blog.new-bamboo.co.uk/2010/7/30/html5-powered-ajax-file-uploads

function supportAjaxUploadProgressEvents() {
    var xhr = new XMLHttpRequest();
    return !! (xhr && ('upload' in xhr) && ('onprogress' in xhr.upload));
};

作为FormData,send()one和upload属性(及其onprogress事件)的能力都是XMLHttpRequest level 2的一部分,你可以测试.upload以查看你是否有2级。没有Mac方便,但功能(遗憾的是,但正确)对Opera 11.50返回false(对于Firefox 4也是如此)。

答案 2 :(得分:7)

  function supportFormData() {
     return !! window.FormData;
  }

来源:https://www.new-bamboo.co.uk/blog/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata/

答案 3 :(得分:2)

这是我在jQuery中用于检查浏览器是否支持FormData和上传进度的单线程序:

 var xhr2 = !! ( window.FormData && ("upload" in ($.ajaxSettings.xhr()) );

答案 4 :(得分:1)

您可以使用此库提供的解决方法。 https://github.com/francois2metz/html5-formdata

答案 5 :(得分:1)

在Safari 5.1.7,Firefox< 6,Opera< 12.14表格数据被支持,但它是错误的。

  • Safari将返回文件大小0

    Opera不支持表单数据的追加方法

    firefox< 6无法正常工作

答案 6 :(得分:-3)

您需要检查浏览器是否支持HTML5文件API。我通过检查是否设置了FileReader函数来做到这一点,如果没有设置它意味着浏览器将不支持文件API。

// Check if window.fileReader exists to make sure the browser supports file uploads
if (typeof(window.FileReader) == 'undefined') 
    {
        alert'Browser does not support HTML5 file uploads!');
    }