2011-09-03 152 views
31

如何检查浏览器是否支持HTML5文件上传(FormData对象)?如何检查浏览器是否支持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 

我有测试了HTML 5文件上传Opera并且它是而不是 workin克当然。

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

回答

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,能够发送()之一,并上传财产(及其onprogress事件)是的XMLHttpRequest级别2的一部分,你可以测试.upload到看看你是否有一个级别2.我没有一个Mac的方便,但功能(可悲的是,但正确)返回错误的歌剧11.50(真正的Firefox 4)。

-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!'); 
    } 
+3

此代码检查FileReader对象,它与FormData对象不同。 – webinista

68

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

+12

+ 1,在IE8/IE9中'(window.FormData === undefined)'返回true,在IE10中返回false。 – Annie

+2

应该使用'typeof',因为undefined在某些浏览器中不是关键字。 (例如,我可以说'var undefined = window。FormData') – Azmisov

+0

所以,用typeof,“if(typeof(window.FormData)=='undefined')”,对吗? – DCShannon

2

这是一个班轮我用它来检查浏览器是否支持FORMDATA和上传进度,jQuery中:

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

在Safari上5.1.7,Firefox的< 6,歌剧< 12.14表单数据是支持的,但它是越野车。

  • Safari浏览器将返回文件大小为0

    Opera不支持表单数据的append方法

    火狐< 6不起作用正确

相关问题