Maison >interface Web >js tutoriel >File Html5 File, Drop, Analyze, Lire et Téléchargez
if (window.File && window.FileList && window.FileReader) { ... }Bien que l'opéra prenne en charge ces objets, ils ne peuvent être utilisés que via une entrée de fichier standard - pas glisser-déposer. Par conséquent, un autre chèque est requis; Je suggère d'utiliser la méthode de téléchargement XMLHTTPREQUEST2, par ex.
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);Chrome et Firefox permettent également aux utilisateurs de faire glisser un ou plusieurs fichiers sur un élément choisi. Vous pouvez joindre des gestionnaires d'événements, notamment «Dragover» et «Dragleave» (pour changer les styles) et «Drop» pour détecter les fichiers abandonnés, par ex.
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }Il est important d'annuler l'événement par défaut. Cela empêche le navigateur qui tente d'afficher ou de gérer un fichier lorsqu'il est tombé dans la fenêtre.
if (window.File && window.FileList && window.FileReader) { ... }Pour plus d'informations, reportez-vous à l'ouverture des fichiers supprimés à l'aide de HTML5 et JavaScript.
var xhr = new XMLHttpRequest(); if (xhr.upload) { ... attach drag and drop events ... }De même, la méthode readasdataurl () récupère les données d'image binaires en tant qu'URL de données codées qui peuvent être transmises à un élément d'attribut SRC ou de canevas d'image:
document.getElementById("fileselect").addEventListener("change", FileSelectHandler, false);Pour plus d'informations, reportez-vous à l'ouverture des fichiers supprimés à l'aide de HTML5 et JavaScript.
document.getElementById("filedrag").addEventListener("drop", FileSelectHandler, false);Remarque Nous avons également envoyé le nom de fichier en tant qu'en-tête HTTP. Ceci est facultatif, mais il nous permet de recréer le fichier en utilisant son nom d'origine sur le serveur à l'aide d'une langue telle que PHP:
// cancel event default e.preventDefault(); // fetch FileList object var files = e.target.files || e.dataTransfer.files; // process all File objects for (var i = 0, file; file = files[i]; i++) { ... }Pour plus d'informations, reportez-vous à la façon de télécharger de manière asynchrone des fichiers à l'aide de HTML5 et AJAX.
// process image files under 300,000 bytes if (file.type.indexOf("image") == 0 && file.size < 300000) { ... }Le gestionnaire reçoit un objet d'événement avec. Télélé (le nombre d'octets transférés) et .Total (la taille du fichier). Par conséquent, la progression peut être calculée et transmise à une balise de progression HTML5 ou à tout autre élément, par ex.
if (file.type.indexOf("text") == 0) { var reader = new FileReader(); reader.onload = function(e) { // get file content var text = e.target.result; ... } reader.readAsText(file); }Pour plus d'informations, reportez-vous à la création de barres de progression de téléchargement de fichiers graphiques dans HTML5 et JavaScript. J'espère que vous avez apprécié cette série. Le glisser-déposer de fichiers est une fonctionnalité importante qui peut transformer l'utilisabilité de l'application Web. HTML5 facilite enfin la tâche.
L'implémentation de la fonction de glisser-déposer HTML5 implique quelques étapes. Tout d'abord, vous devez créer une zone de dépôt, qui est un domaine où les utilisateurs peuvent supprimer leurs fichiers. Cela peut être n'importe quel élément HTML, mais il doit avoir l'attribut «draggable» défini sur true. Ensuite, vous devez ajouter des auditeurs d'événements pour les événements «Dragover» et «Drop». L’événement «Dragover» est tiré lorsqu'un élément traîné se situe au-dessus de la zone de dépôt, et l'événement «Drop» est tiré lorsque l'élément est abandonné. Dans le gestionnaire d'événements de l'événement «Drop», vous pouvez accéder aux fichiers supprimés via la propriété «datatransfer.files» de l'objet de l'événement.
À la fois «datatransfer.files» et «datatransfer.items» sont des propriétés de l'objet «DataTransfer», qui est associé aux événements de glisser-déposer. La propriété «datatransfer.files» est un objet FileList représentant les fichiers glissés. Ceci est utile lorsque vous souhaitez gérer les fichiers supprimés du côté serveur. D'un autre côté, «Datatransfer.items» est un objet DataTransFeritemList représentant toutes les données de glisser. Ceci est utile lorsque vous souhaitez gérer différents types de données de glisser, pas seulement les fichiers.
Si votre "Datatransfer.Files" est vide lorsque l'événement "Drop est tiré, cela pourrait être parce que vous essayez d'y accéder dans l'événement" Dragover ". La propriété «Datatransfer.Files» n'est pas remplie dans l'événement «Drop». Assurez-vous que vous y accédez dans le bon gestionnaire d'événements.
Vous pouvez lire le contenu des fichiers supprimés à l'aide de l'API FileReader. Tout d'abord, vous devez créer un nouvel objet FileReader. Ensuite, vous pouvez utiliser la méthode «readastext» ou «readasdataurl» pour lire le contenu du fichier. La méthode «Readastext» lit le fichier comme une chaîne de texte, et la méthode «readasdataurl» lit le fichier comme une url de données
Vous pouvez afficher une barre de progression en écoutant l'événement «Progress» de l'objet XMLHTTPrequest. L’événement «Progress» est tiré périodiquement au fur et à mesure que le téléchargement progresse. Dans le gestionnaire d'événements, vous pouvez calculer le pourcentage de progression et mettre à jour la barre de progression en conséquence. Assurez-vous de définir la propriété «Télécharger» de l'objet XMLHTTPRequest sur True pour activer l'événement «Progress».
Vous pouvez gérer plusieurs téléchargements de fichiers en itérant sur la propriété «datatransfer.files», quel est un objet fileList. Chaque élément de l'objet FileList est un objet de fichier représentant un fichier supprimé. Vous pouvez gérer chaque fichier individuellement, par exemple, en lisant son contenu ou en le téléchargeant sur le serveur.
Vous pouvez restreindre les types de fichiers qui peuvent être supprimés des propriétés. La propriété «Type» est une chaîne représentant le type MIME du fichier. Si le type de fichier n'est pas autorisé, vous pouvez empêcher l'action de dépôt en appelant la méthode «empêcher default» de l'objet de l'événement dans le gestionnaire d'événements «Drop».
Gestion des événements de glisser-déposer pour les éléments imbriqués peut être délicat car les événements bouillonnent l'arbre Dom. Pour empêcher un élément parent de recevoir un événement de glisser-déposer destiné à un élément enfant, vous pouvez appeler la méthode «stoppropagation» de l'objet de l'événement dans le gestionnaire d'événements de l'élément enfant.
Comment puis-je tester les fonctionnalités de glisser-déposer dans les tests automatisés?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!