web-dev-qa-db-fra.com

Comment puis-je vérifier si le navigateur prend en charge le téléchargement de fichiers HTML5 (objet FormData)?

Comment puis-je vérifier si le navigateur prend en charge le téléchargement de fichiers HTML5 (objet FormData)?

var fd = new FormData();

Suite à la réponse de ce post , mais le code ne renvoie pas de réponse correcte sur le navigateur,

window.onload = function()
{
 if (!!window.FileReader)
 {
  alert('supported');
 }
 else
 {
  alert('not supported');
 }
}


Firefox - supported
Chrome - supported
Opera - supported
Safari - not supported
IE9 - not supported

Mais la bonne prise en charge du navigateur devrait être,

Firefox - supported
Chrome - supported
Opera - not supported
Safari - supported
IE9 - not supported

J'ai testé le téléchargement de fichiers html 5 sur Opera et ce n'est pas travailler à coup sûr.

Je suis sûr que safari prend en charge le téléchargement de fichiers html 5.

31
laukok

Essayez if( window.FormData === undefined ) ou if( window.FormData !== undefined ).

70
webinista

De 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));
};

En tant que FormData, la possibilité d'en envoyer () et la propriété upload (et son événement onprogress) font tous partie de XMLHttpRequest niveau 2, vous pouvez tester .upload pour voir si vous avez un niveau 2. Je n'ai pas avoir un Mac à portée de main, mais la fonction (malheureusement, mais correctement) renvoie false pour Opera 11.50 (et true pour Firefox 4).

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

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

7
Faraz Kelhini

Ceci est le one-liner que j'utilise pour vérifier si le navigateur prend en charge FormData et la progression du téléchargement, dans jQuery:

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

Vous pouvez utiliser la solution de contournement fournie par cette bibliothèque. https://github.com/francois2metz/html5-formdata

1
Sujay

Sur Safari 5.1.7, Firefox <6, Opera <12.14 les données du formulaire sont prises en charge mais elles sont boguées.

  • Safari renverra la taille du fichier 0

    Opera ne prend pas en charge la méthode d'ajout de données de formulaire

    firefox <6 ne fonctionne pas correctement

1
albanx