1. Aperçu
Dans le passé, accéder aux fichiers locaux était un casse-tête pour les applications basées sur un navigateur. Bien que JavaScript joue un rôle de plus en plus important avec le développement continu de la technologie d'application Web 2.0, pour des raisons de sécurité, JavaScript a toujours été incapable d'accéder aux fichiers locaux. Par conséquent, afin de mettre en œuvre des fonctions telles que le glisser et le téléchargement de fichiers locaux dans le navigateur, nous devons recourir à diverses technologies fournies par des navigateurs spécifiques. Par exemple, pour IE, nous devons utiliser des contrôles ActiveX pour accéder aux fichiers locaux, et pour Firefox, nous devons également utiliser le développement de plug-ins. Étant donné que les implémentations techniques des différents navigateurs sont différentes, pour que le programme prenne en charge plusieurs navigateurs, notre programme deviendra très complexe et difficile à maintenir. Mais maintenant, tout cela a été complètement changé en raison de l’émergence de l’API File.
File API est un projet soumis par Mozilla au W3C, visant à lancer un ensemble d'API JavaScript standard. Sa fonction de base est d'exploiter des fichiers locaux avec JavaScript. Pour des raisons de sécurité, cette API ne fournit qu'un accès limité aux fichiers locaux. Avec lui, nous pouvons facilement utiliser du JavaScript pur pour lire et télécharger des fichiers locaux. Actuellement, FireFox 3.6 est le premier navigateur à prendre en charge cette fonctionnalité. De plus, les dernières versions des navigateurs Google Chrome et Safari bénéficient également d'une prise en charge correspondante. L'API File devrait faire partie de la future spécification HTML 5 actuellement développée par le W3C.
2. Présentation de l'API de fichiers
L'API File se compose d'un ensemble d'objets et d'événements JavaScript. Donne aux développeurs la possibilité de manipuler les fichiers sélectionnés dans le contrôle de sélection de fichiers La figure 1 montre la relation de combinaison de tous les JavaScript dans l'API File.
Type FileList contient un ensemble d'objets File. Habituellement, les objets FileList peuvent être extraits du champ de fichier () du formulaire. Un objet Blob représente un ensemble de flux binaires bruts qu'un navigateur peut lire. Dans l'objet Blob, l'attribut size représente la taille du flux. La fonction slice() peut diviser un long objet Blob en petits morceaux. L'objet File hérite de l'objet Blob et les attributs liés au fichier sont ajoutés à l'objet Blob. Parmi eux, le nom d'attribut représente le nom du fichier. Ce nom supprime les informations de chemin du fichier et ne conserve que le nom du fichier. L'attribut type représente le type MIME du fichier. L'attribut urn représente les informations URN de ce fichier. Pour terminer l'opération de lecture de fichier, une instance d'objet FileReader est associée à un objet File ou Blob et fournit trois fonctions de lecture de fichier différentes et 6 événements.
Le contenu spécifique de la fonction de lecture de fichiers :
readAsBinaryString() Lire le contenu du fichier et le résultat de la lecture est une chaîne binaire. Chaque octet du fichier sera représenté sous forme d'entier compris dans la plage [0..255]. La fonction accepte un objet File comme paramètre.
readAsText() Lit le contenu du fichier et le résultat de la lecture est une chaîne de texte représentant le contenu du fichier. La fonction accepte un objet File et le nom de l'encodage du texte comme paramètres.
readAsDataURL Lit le contenu du fichier et le résultat de la lecture est une URL data:. DataURL est défini par RFC2397.
Le contenu spécifique de l'événement de lecture de fichier :
Nom de l'événement Description de l'événement
Onloadstart Déclenché lorsque la lecture du fichier démarre.
Progression Déclenché régulièrement lorsque la lecture est en cours. Les paramètres de l'événement contiendront la quantité totale de données lues.
Abandonner Déclenché lorsque la lecture est interrompue.
Erreur Déclenché lorsqu'une erreur de lecture se produit.
Charger Déclenché lorsque la lecture se termine avec succès.
Loadend Sera déclenché lorsque la lecture est terminée, quel que soit le succès ou l'échec.
3. Exemple simple d'API de fichier
Ensuite, nous utilisons un exemple simple pour montrer l’utilisation de base de l’API File. Cet exemple contient deux fichiers de code, index.html contient le code HTML côté Web et le code JavaScript pour le traitement des téléchargements. upload.jsp contient le code côté serveur pour recevoir les fichiers téléchargés. Veuillez consulter le code source.zip dans la pièce jointe. Dans cet exemple, nous afficherons un formulaire traditionnel avec un champ de sélection de Fichier. Lorsque l'utilisateur sélectionne un fichier et clique sur Soumettre, nous utilisons l'API File pour lire le contenu du fichier et télécharger le fichier sur le serveur à l'aide d'Ajax via l'objet XMLHttpRequest. La figure 2 montre une capture d'écran de la démo en action.
Nous montrons le code étape par étape. Le listing 1 montre la partie HTML du code.
Partie HTML de l'exemple de code du listing 1
<body> <h1>File API Demo</h1> <p> <!-- 用于文件上传的表单元素 --> <form name="demoForm" id="demoForm" method="post" enctype="multipart/form-data" action="javascript: uploadAndSubmit();"> <p>Upload File: <input type="file" name="file" /></p> <p><input type="submit" value="Submit" /></p> </form> <div>Progessing (in Bytes): <span id="bytesRead"> </span> / <span id="bytesTotal"></span> </div> </p> </body>
Comme vous pouvez le voir, nous utilisons une balise