Как проверить, поддерживает ли браузер загрузку файла HTML5 (объект FormData)? - PullRequest
31 голосов
/ 04 сентября 2011

Как проверить, поддерживает ли браузер загрузку файла HTML5 (объект FormData)?

var fd = new FormData();

После ответа из этого поста , но код не возвращает правильный ответ о браузере,

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 , и он не работает наверняка.

Я уверен, что safari поддерживает загрузку файлов html 5.

Ответы [ 7 ]

70 голосов
/ 27 декабря 2011

Попробуйте if( window.FormData === undefined ) или if( window.FormData !== undefined ).

11 голосов
/ 21 сентября 2011

С 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 уровня 2, вы можете проверить наличие .upload, чтобы проверить, есть ли у вас уровень 2. У меня нет под рукой Mac, нофункция (к сожалению, но правильно) возвращает false для Opera 11.50 (и true для Firefox 4).

7 голосов
/ 19 октября 2014
2 голосов
/ 20 августа 2012

Это одна строка, которую я использую, чтобы проверить, поддерживает ли браузер FormData и прогресс загрузки, в jQuery:

 var xhr2 = !! ( window.FormData && ("upload" in ($.ajaxSettings.xhr()) );
1 голос
/ 03 марта 2013

В Safari 5.1.7, Firefox <6, Opera <12.14 данные формы поддерживаются, но содержат ошибки.</p>

  • Safari вернет размер файла 0

    Opera не поддерживает метод добавления данных формы

    firefox <6 работает неправильно </p>

1 голос
/ 07 февраля 2012

Возможно, вы можете использовать обходной путь, предоставляемый этой библиотекой. https://github.com/francois2metz/html5-formdata

0 голосов
/ 14 декабря 2011

Необходимо проверить, поддерживает ли браузер API-интерфейс файла HTML5. Я делаю это, проверяя, установлена ​​ли функция 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!');
    }
...