如何检查浏览器是否支持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文件上传。
答案 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!');
}