Maison  >  Article  >  interface Web  >  Comment télécharger un fichier sans formulaire en utilisant JavaScript ?

Comment télécharger un fichier sans formulaire en utilisant JavaScript ?

PHPz
PHPzavant
2023-09-09 23:45:031345parcourir

如何使用 JavaScript 上传没有表单的文件?

Parfois, les développeurs peuvent avoir besoin de télécharger des fichiers sans utiliser de formulaires JavaScript. Normalement, nous créons un formulaire pour obtenir les données et les fichiers de l'utilisateur, mais dans ce didacticiel, nous apprendrons à obtenir les fichiers de l'utilisateur sans formulaire et à les envoyer au backend.

Utilisation des objets FormData() et des requêtes Ajax

L'objet FormData nous permet de stocker les données du formulaire dans des paires clé-valeur. Nous devons utiliser un constructeur pour initialiser les variables. Nous pouvons permettre à l'utilisateur de télécharger un fichier à l'aide d'une entrée HTML et de stocker ce fichier dans les données du formulaire. Nous pouvons ensuite envoyer les données du formulaire au backend.

Grammaire

Les utilisateurs peuvent suivre la syntaxe ci-dessous pour télécharger des fichiers à l'aide de l'objet FormData() et de la requête ajax sans utiliser de formulaire.

form_data.append("file", uploadedFile);
$.ajax({
   url: "URL",
   method: "POST",
   data: form_data,
}); 

Dans la syntaxe ci-dessus, nous utilisons la méthode append() pour ajouter un fichier à l'objet de données du formulaire. De plus, nous utilisons ajax() pour envoyer des données à l'API.

Exemple

Dans l'exemple ci-dessous, nous avons créé un fichier d'entrée en HTML à l'aide de la balise . En JavaScript, chaque fois qu'un utilisateur télécharge un fichier, nous y accédons et l'ajoutons à l'objet form_data.

Après cela, nous envoyons le fichier à l'API via une requête POST en utilisant ajax.

<html>
<head>
   <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
</head>
<body>
   <h3>Using the <i>FormData object and ajax request</i> to upload a file without using the form data in JavaScript</h3>
   <input type = "file" name = "file" id = "file_input" />
   <div id = "content"> </div>
   <script>
      $(document).on('change', '#file_input', function () {
         let uploadedFile = document.getElementById('file_input').files[0];
         var form_data = new FormData();
         form_data.append("file", uploadedFile);
         $.ajax({
            url: "URL",
            method: "POST",
            data: form_data,
         });
      });
   </script>
</body>
</html>

Plugin de téléchargement simple utilisant jQuery

jQuery inclut un simple plugin de téléchargement que nous pouvons utiliser pour envoyer des fichiers à l'API. Nous devons ajouter le CDN du plugin de téléchargement simple à la section

pour l'utiliser. Si un développeur utilise l'application, il peut utiliser les commandes NPM pour installer le package.

Grammaire

Les utilisateurs doivent suivre la syntaxe suivante pour télécharger des fichiers sans formulaire à l'aide de JavaScript à l'aide du plugin jQuery Simple Upload.

$(this).simpleUpload("URL", {
   start: function (file) {
      
      //upload started
   },
});

Dans la syntaxe ci-dessus, nous appelons la fonction simpleUpload() du plug-in de téléchargement simple pour télécharger des fichiers.

Exemple

Dans l'exemple ci-dessous, nous avons ajouté le chemin d'accès au fichier simpleUpload.min.js dans la section

. Nous avons ajouté un événement "change" sur l'entrée du fichier. Dans la fonction de rappel, nous appelons la fonction simpleUpload() avec l'entrée du fichier comme référence. Nous passons cet objet comme deuxième paramètre de la fonction simpleUpload() avec la clé et la fonction de rappel comme valeurs.
<html>
<head> 
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
   <script src= "https://cdn.jsdelivr.net/npm/jquery-simpleupload@1.1.0/simpleUpload.min.js"> </script>
</head>
<body>
   <h3>Using the <i>jQuery simple upload</i> plugin to upload the file without using the form</h3>
   <input type = "file" name = "file" id = "file_input">
   <div id = "content"> </div>
   <script>
      $('#file_input').change(function () {
         $(this).simpleUpload("abcd.php", {
            start: function (file) {
               
               //upload started
               content.innerHTML = "upload started";
            },
         });
      });
   </script>
</body>
</html> 

Les utilisateurs ont appris deux manières différentes de télécharger des fichiers sans utiliser de formulaires en JavaScript. Nous avons utilisé l'objet FormData et la méthode ajax() dans la première méthode. Dans la deuxième méthode, nous avons utilisé le plugin de téléchargement simple de Jquery.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer