web-dev-qa-db-ja.com

ブラウザが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

私はOperaでHTML 5ファイルのアップロードをテストしましたが、それはnotです確実に動作します。

safariはhtml 5ファイルのアップロードをサポートしていると確信しています。

31
laukok

if( window.FormData === undefined )またはif( window.FormData !== undefined )を試してください。

70
webinista

から 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()の機能、およびuploadプロパティ(およびそのonprogressイベント)はすべてXMLHttpRequestレベル2の一部であるため、.uploadをテストして、レベル2があるかどうかを確認できます。 Macは便利ですが、関数は(=ただし、正しく)Opera 11.50(およびFirefox 4ではtrue)に対してfalseを返します。

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

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

7
Faraz Kelhini

これは、ブラウザーがFormQueryをサポートしているかどうかをjQueryで確認するために使用する1行のライナーです。

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

このライブラリが提供する回避策を使用できます。 https://github.com/francois2metz/html5-formdata

1
Sujay

Safari 5.1.7では、Firefox <6、Opera <12.14フォームデータはサポートされていますが、バグがあります。

  • Safariはファイルサイズ0を返します

    Operaはフォームデータのappendメソッドをサポートしていません

    firefox <6は正しく動作しません

1
albanx