2011-09-03 151 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不起作用正確

相關問題