ブラウザが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ファイルのアップロードをサポートしていると確信しています。
if( window.FormData === undefined )
またはif( window.FormData !== undefined )
を試してください。
から 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を返します。
function supportFormData() {
return !! window.FormData;
}
ソース: https://www.new-bamboo.co.uk/blog/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata/
これは、ブラウザーがFormQueryをサポートしているかどうかをjQueryで確認するために使用する1行のライナーです。
var xhr2 = !! ( window.FormData && ("upload" in ($.ajaxSettings.xhr()) );
このライブラリが提供する回避策を使用できます。 https://github.com/francois2metz/html5-formdata
Safari 5.1.7では、Firefox <6、Opera <12.14フォームデータはサポートされていますが、バグがあります。
Safariはファイルサイズ0を返します
Operaはフォームデータのappendメソッドをサポートしていません
firefox <6は正しく動作しません