recherche
Maisoninterface Webjs tutorielComment télécharger de manière asynchrone des fichiers à l'aide de HTML5 et AJAX

How to Asynchronously Upload Files Using HTML5 and 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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Frameworks javascript: alimenter le développement Web moderneFrameworks javascript: alimenter le développement Web moderneMay 02, 2025 am 12:04 AM

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.

La relation entre JavaScript, C et BrowsersLa relation entre JavaScript, C et BrowsersMay 01, 2025 am 12:06 AM

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 diffuse avec dactylographieNode.js diffuse avec dactylographieApr 30, 2025 am 08:22 AM

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

Python vs JavaScript: considérations de performance et d'efficacitéPython vs JavaScript: considérations de performance et d'efficacitéApr 30, 2025 am 12:08 AM

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.

Les origines de JavaScript: explorer son langage d'implémentationLes origines de JavaScript: explorer son langage d'implémentationApr 29, 2025 am 12:51 AM

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.

Dans les coulisses: quel langage alimente JavaScript?Dans les coulisses: quel langage alimente JavaScript?Apr 28, 2025 am 12:01 AM

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.

L'avenir de Python et Javascript: tendances et prédictionsL'avenir de Python et Javascript: tendances et prédictionsApr 27, 2025 am 12:21 AM

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.

Python vs JavaScript: environnements et outils de développementPython vs JavaScript: environnements et outils de développementApr 26, 2025 am 12:09 AM

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.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

MantisBT

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

Adaptateur de serveur SAP NetWeaver pour Eclipse

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

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

MinGW - GNU minimaliste pour Windows

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é

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.