


Comment télécharger de manière asynchrone des fichiers à l'aide de HTML5 et AJAX
Points de base
- Le téléchargement de fichiers de manière asynchrone à l'aide de HTML5 et AJAX peut être effectué en arrière-plan, permettant aux utilisateurs d'effectuer d'autres tâches sur la page pendant le téléchargement. Ce processus implique la création de formulaires HTML pour télécharger des fichiers sur des pages PHP, et JavaScript garantit que seules des images JPG avec moins de 300 000 octets sont téléchargées.
- La fonction de téléchargement JavaScript nécessite un objet XMLHTTPRequest2 (disponible dans Firefox et Chrome). La méthode .Open () de XMLHTTPRequest est définie pour publier les données sur la page PHP, définir l'en-tête HTTP sur le nom du fichier et transmettre l'objet de fichier à la méthode .Send ().
- Le fichier PHP vérifie l'en-tête http x_filename pour distinguer les demandes AJAX et la publication de formulaire standard. Si le nom de fichier est défini, PHP récupérera les données publiées et la publiera dans un nouveau fichier dans le dossier "Uploads". Le post HTML Multipart / Form Data standard est géré à l'aide de la fonction PHP $ _FILE habituelle.
Dans les articles précédents, nous avons appris à utiliser HTML5 pour faire glisser et déposer des fichiers et à ouvrir des fichiers à l'aide de HTML5 et JavaScript. Nous avons maintenant un ensemble valide de fichiers qui peuvent télécharger chaque fichier sur le serveur. Ce processus a lieu de manière asynchrone en arrière-plan, afin que les utilisateurs puissent effectuer d'autres tâches sur la page au fur et à mesure que le processus progresse.
html
Vérifions à nouveau notre formulaire HTML:
<fieldset><legend>HTML文件上传</legend><div> <label for="fileselect">要上传的文件:</label> <div>或在此处拖放文件</div></div><div>上传文件</div></fieldset>
Nous téléchargeons le fichier sur la page PHP upload.php. Lorsque l'utilisateur clique sur "Télécharger le fichier", la page traitera les demandes de téléchargement AJAX et la publication de formulaire standard. Notre JavaScript garantira que seules les images JPG sont téléchargées avec moins de 300 000 octets (la valeur spécifiée dans max_file_size).
javascript
Tout d'abord, nous devons ajouter une ligne à la fonction FileSelecthandler () appelée lors de la sélection ou de la glisse et de supprimer un ou plusieurs fichiers. Dans notre boucle de fichier, nous appellerons une autre fonction - uploadFile ():
// 文件选择 function FileSelectHandler(e) { // 取消事件和悬停样式 FileDragHover(e); // 获取FileList对象 var files = e.target.files || e.dataTransfer.files; // 处理所有File对象 for (var i = 0, f; f = files[i]; i++) { ParseFile(f); UploadFile(f); } }
Le téléchargement de fichiers nécessite un objet XMLHTTPRequest2, qui est actuellement disponible dans Firefox et Chrome. Avant de passer l'appel AJAX, nous nous assurons que la méthode .Upload () est disponible et que nous avons un JPG avec une taille de fichier plus petite que la valeur du formulaire max_file_size:
// 上传JPEG文件 function UploadFile(file) { var xhr = new XMLHttpRequest(); if (xhr.upload && file.type == "image/jpeg" && file.size < $id("MAX_FILE_SIZE").value) { // 开始上传 xhr.open("POST", $id("upload").action, true); xhr.setRequestHeader("X_FILENAME", file.name); xhr.send(file); } }
La méthode .open () de XMLHttpRequest est définie pour publier les données sur télécharger.php (la propriété d'action de notre formulaire de téléchargement). De plus, nous définissons l'en-tête HTTP sur le nom du fichier et passons l'objet de fichier à la méthode .Send ().
php
Notre fichier php upload.php vérifie désormais l'en-tête http x_filename pour distinguer les demandes AJAX et la publication de formulaire standard:
<?php $fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] : false); ?>
Si le nom de fichier est défini, PHP peut récupérer les données publiées et les sortir dans un nouveau fichier dans le dossier "uploads". Étonnamment, cela peut être réalisé avec une seule ligne de code:
if ($fn) { // AJAX调用 file_put_contents( 'uploads/' . $fn, file_get_contents('php://input') ); echo "$fn 上传成功"; exit(); }
Le message standard HTML Multipart / Form Data peut être géré à l'aide de la fonction PHP $ _FILE habituelle:
<fieldset><legend>HTML文件上传</legend><div> <label for="fileselect">要上传的文件:</label> <div>或在此处拖放文件</div></div><div>上传文件</div></fieldset>
Vous pouvez afficher la page de démonstration, mais notez qu'elle est hébergée sur des serveurs sans support PHP et que les téléchargements ne se produisent pas. Téléchargez donc le fichier pour vérifier le code et l'installer sur votre propre serveur PHP.
Le code ci-dessus fonctionne, mais l'utilisateur ne sait pas si le téléchargement de fichiers a démarré, terminé ou échoué. Vous devez lire le dernier numéro de cette série: Comment créer une barre de progression de téléchargement de fichiers dans HTML5 et JavaScript …
FAQ (FAQ) À propos de HTML5 Ajax Fichier Upload
(La partie FAQ est omise ici parce que cette partie n'a rien à voir avec les objectifs pseudo-originaux et est plus long. Il est normal de conserver la FAQ, mais la langue doit être réorganisée pour la rendre cohérente avec le style global de la Article.)
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!

La puissance du cadre JavaScript réside dans la simplification du développement, l'amélioration de l'expérience utilisateur et les performances des applications. Lorsque vous choisissez un cadre, considérez: 1. Taille et complexité du projet, 2. Expérience d'équipe, 3. Écosystème et soutien communautaire.

INTRODUCTION Je sais que vous pouvez le trouver étrange, que doit faire exactement JavaScript, C et Browser? Ils semblent sans rapport, mais en fait, ils jouent un rôle très important dans le développement Web moderne. Aujourd'hui, nous discuterons du lien étroit entre ces trois. Grâce à cet article, vous apprendrez comment JavaScript fonctionne dans le navigateur, le rôle de C dans le moteur du navigateur et comment ils fonctionnent ensemble pour stimuler le rendu et l'interaction des pages Web. Nous connaissons tous la relation entre JavaScript et Browser. JavaScript est la langue principale du développement frontal. Il fonctionne directement dans le navigateur, rendant les pages Web vives et intéressantes. Vous êtes-vous déjà demandé pourquoi javascr

Node.js excelle dans des E / S efficaces, en grande partie grâce aux flux. Streams traite les données progressivement, en évitant la surcharge de mémoire - idéal pour les fichiers volumineux, les tâches réseau et les applications en temps réel. Combiner les flux avec la sécurité de type dactylographié crée un powe

Les différences de performance et d'efficacité entre Python et JavaScript se reflètent principalement dans: 1) comme un langage interprété, Python fonctionne lentement mais a une efficacité de développement élevée et convient au développement rapide des prototypes; 2) JavaScript est limité au thread unique dans le navigateur, mais les E / S multi-threading et asynchrones peuvent être utilisées pour améliorer les performances dans Node.js, et les deux ont des avantages dans les projets réels.

JavaScript est originaire de 1995 et a été créé par Brandon Ike, et a réalisé que la langue en langue C. 1.C offre des capacités de programmation élevées et au niveau du système pour JavaScript. 2. La gestion de la mémoire de JavaScript et l'optimisation des performances reposent sur le langage C. 3. La fonctionnalité multiplateforme du langage C aide JavaScript à s'exécuter efficacement sur différents systèmes d'exploitation.

JavaScript s'exécute dans les navigateurs et les environnements Node.js et s'appuie sur le moteur JavaScript pour analyser et exécuter du code. 1) Générer une arborescence de syntaxe abstraite (AST) au stade d'analyse; 2) Convertir AST en bytecode ou code machine à l'étape de compilation; 3) Exécutez le code compilé à l'étape d'exécution.

Les tendances futures de Python et JavaScript incluent: 1. Python consolidera sa position dans les domaines de l'informatique scientifique et de l'IA, 2. JavaScript favorisera le développement de la technologie Web, 3. Le développement de plate-forme multiplié deviendra un sujet brûlant, et 4. L'optimisation des performances sera le focus. Les deux continueront d'étendre les scénarios d'application dans leurs champs respectifs et de faire plus de percées dans les performances.

Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.
