{"id":24874,"date":"2021-05-26T09:37:00","date_gmt":"2021-05-26T06:37:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24874"},"modified":"2021-10-18T02:13:36","modified_gmt":"2021-10-17T23:13:36","slug":"glissez-deposez-plusieurs-fichiers-en-utilisant-javascript-et-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/glissez-deposez-plusieurs-fichiers-en-utilisant-javascript-et-php\/","title":{"rendered":"Glissez-d\u00e9posez plusieurs fichiers en utilisant JavaScript et PHP"},"content":{"rendered":"<p>Dans le pass\u00e9, j&rsquo;ai \u00e9crit un article sur le <a href=\"https:\/\/themewp.inform.click\/fr\/glisser-deposer-le-telechargement-de-fichiers-a-l-aide-de-javascript-et-php\/\" title=\"t\u00e9l\u00e9chargement de fichiers par glisser-d\u00e9poser \u00e0 l'aide de JavaScript et PHP\" >t\u00e9l\u00e9chargement de fichiers par glisser-d\u00e9poser \u00e0 l&rsquo;aide de JavaScript et PHP<\/a>. Certains lecteurs ont demand\u00e9 d&rsquo;\u00e9crire un article sur l&rsquo;ajout d&rsquo;un t\u00e9l\u00e9chargeur de fichiers qui permet aux utilisateurs de t\u00e9l\u00e9charger plusieurs fichiers avec les fonctionnalit\u00e9s de glisser-d\u00e9poser.<\/p>\n<p>Lorsque vous travaillez sur une application Web, vous devrez peut-\u00eatre t\u00e9l\u00e9charger plusieurs fichiers avec un seul t\u00e9l\u00e9chargeur sur votre formulaire. Il peut aider un utilisateur \u00e0 t\u00e9l\u00e9charger un ou plusieurs fichiers en une seule fois. Ils n&rsquo;aiment pas t\u00e9l\u00e9charger plusieurs fichiers un par un. Donner une telle fonctionnalit\u00e9 de t\u00e9l\u00e9chargement de fichiers ajoute une meilleure exp\u00e9rience utilisateur et acc\u00e9l\u00e8re \u00e9galement votre application.<\/p>\n<p>Dans cet article, je vous montre comment ajouter ce t\u00e9l\u00e9chargeur de fichiers sans utiliser de plugin externe de glisser-d\u00e9poser. Je vais t\u00e9l\u00e9charger les fichiers en utilisant l&rsquo;Ajax. Cela signifie que les fichiers seront t\u00e9l\u00e9charg\u00e9s sur le serveur sans recharger une page enti\u00e8re.<\/p>\n<h3>Commencer<\/h3>\n<p>Comme je l&rsquo;ai dit, nous n&rsquo;utiliserons aucun plugin externe pour la fonction glisser-d\u00e9poser. Je vais \u00e9crire tout le code \u00e0 partir de z\u00e9ro. C&rsquo;est beaucoup plus facile. Il n&rsquo;y a rien de complexe dedans. Suivez simplement les \u00e9tapes ci-dessous et vous avez termin\u00e9.<\/p>\n<p>Cr\u00e9ons un fichier <code>index.html<\/code>et ajoutons le code ci-dessous.<\/p>\n<p><strong>index.html<\/strong><\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta charset=\"UTF-8\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Drag Drop Multiple File Upload&lt;\/title&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"style.css\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drop_file_zone\" ondrop=\"upload_file(event)\" ondragover=\"return false\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drag_upload_file\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Drop file(s) here&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;or&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"button\" value=\"Select File(s)\" onclick=\"file_explorer();\"&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"selectfile\" multiple&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"custom.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Ici, j&rsquo;ai inclus <code>style.css<\/code>et <code>custom.js<\/code>dans lequel nous allons ajouter un code associ\u00e9. Comme nous avons l&rsquo;intention d&rsquo;utiliser Ajax, j&rsquo;ai inclus une biblioth\u00e8que jQuery.<\/p>\n<p>Pour donner une interface utilisateur de base \u00e0 notre t\u00e9l\u00e9chargeur de fichiers, ajoutons quelques propri\u00e9t\u00e9s CSS. Bien s\u00fbr, vous pouvez ajouter votre propre CSS pour donner un aspect diff\u00e9rent au t\u00e9l\u00e9chargeur de fichiers.<\/p>\n<p><strong>style.css<\/strong><\/p>\n<pre><code>#drop_file_zone {\n\u00a0\u00a0\u00a0\u00a0background-color: #EEE;\n\u00a0\u00a0\u00a0\u00a0border: #999 5px dashed;\n\u00a0\u00a0\u00a0\u00a0width: 290px;\n\u00a0\u00a0\u00a0\u00a0height: 200px;\n\u00a0\u00a0\u00a0\u00a0padding: 8px;\n\u00a0\u00a0\u00a0\u00a0font-size: 18px;\n}\n#drag_upload_file {\n\u00a0\u00a0\u00a0\u00a0width:50%;\n\u00a0\u00a0\u00a0\u00a0margin:0 auto;\n}\n#drag_upload_file p {\n\u00a0\u00a0\u00a0\u00a0text-align: center;\n}\n#drag_upload_file #selectfile {\n\u00a0\u00a0\u00a0\u00a0display: none;\n}<\/code><\/pre>\n<p>Apr\u00e8s cela, vous devriez voir votre t\u00e9l\u00e9chargeur de fichiers comme la capture d&rsquo;\u00e9cran ci-dessous\u00a0:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20458-6081f4f9475a9.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20458-6081f4f9475a9.png\" alt=\"Glissez-d\u00e9posez plusieurs fichiers en utilisant JavaScript et PHP\" ><\/a><\/p>\n<h3>Faites glisser et d\u00e9posez plusieurs fichiers \u00e0 l&rsquo;aide de JavaScript et PHP<\/h3>\n<p>Vous \u00eates configur\u00e9 avec l&rsquo;interface utilisateur de base. Maintenant, nous pouvons aller de l&rsquo;avant et \u00e9crire du code r\u00e9el pour JavaScript et PHP qui t\u00e9l\u00e9charge des fichiers sur un serveur. Dans notre HTML, j&rsquo;ai ajout\u00e9 2 m\u00e9thodes upload_file() et file_explorer () qui appellent respectivement les fichiers de suppression et les fichiers s\u00e9lectionn\u00e9s.<\/p>\n<p>D\u00e9finissons ces m\u00e9thodes et passons les fichiers au script c\u00f4t\u00e9 serveur qui t\u00e9l\u00e9charge les fichiers sur un serveur.<\/p>\n<p><strong>custom.js<\/strong><\/p>\n<pre><code>var fileobj;\nfunction upload_file(e) {\n\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\u00a0\u00a0\u00a0ajax_file_upload(e.dataTransfer.files);\n}\n\u00a0\nfunction file_explorer() {\n\u00a0\u00a0\u00a0\u00a0document.getElementById('selectfile').click();\n\u00a0\u00a0\u00a0\u00a0document.getElementById('selectfile').onchange = function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0files = document.getElementById('selectfile').files;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ajax_file_upload(files);\n\u00a0\u00a0\u00a0\u00a0};\n}\n\u00a0\nfunction ajax_file_upload(file_obj) {\n\u00a0\u00a0\u00a0\u00a0if(file_obj != undefined) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0var form_data = new FormData();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for(i=0; i&lt;file_obj.length; i++) {\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file[]', file_obj[i]);\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$.ajax({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0type: 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: 'ajax.php',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0contentType: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0processData: false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0data: form_data,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0success:function(response) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0alert(response);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$('#selectfile').val('');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Enfin, \u00e9crivez un code c\u00f4t\u00e9 serveur pour le t\u00e9l\u00e9chargement de fichier dans le <code>ajax.php<\/code>fichier.<\/p>\n<p><strong>ajax.php<\/strong><\/p>\n<pre><code>&lt;?php\nforeach($_FILES['file']['name'] as $key=&gt;$val){\n\u00a0\u00a0\u00a0\u00a0$file_name = $_FILES['file']['name'][$key];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ get file extension\n\u00a0\u00a0\u00a0\u00a0$ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ get filename without extension\n\u00a0\u00a0\u00a0\u00a0$filenamewithoutextension = pathinfo($file_name, PATHINFO_FILENAME);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (!file_exists(getcwd(). '\/uploads')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0mkdir(getcwd(). '\/uploads', 0777);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$filename_to_store = $filenamewithoutextension. '_' .uniqid(). '.' .$ext;\n\u00a0\u00a0\u00a0\u00a0move_uploaded_file($_FILES['file']['tmp_name'][$key], getcwd(). '\/uploads\/'.$filename_to_store);\n}\necho \"File(s) uploaded successfully\";\ndie;<\/code><\/pre>\n<p>Ce code cr\u00e9e un r\u00e9pertoire &lsquo;uploads&rsquo; sur votre serveur et stocke tous les fichiers dans ce r\u00e9pertoire. Lors du stockage des fichiers sur un serveur, nous nous occupons de conserver le nom unique de chaque fichier t\u00e9l\u00e9charg\u00e9 \u00e0 l&rsquo;aide de la fonction PHP <code>uniqid()<\/code>.<\/p>\n<p>Il s&rsquo;agit de t\u00e9l\u00e9charger plusieurs fichiers \u00e0 l&rsquo;aide de la fonction glisser-d\u00e9poser. J&rsquo;esp\u00e8re que vous l&rsquo;avez appris. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/optimisation-d-image-a-l-aide-du-package-artisansweb-image-optimizer\/\" title=\"Optimisation d'image \u00e0 l'aide du package artisansweb\/image-optimizer\" >Optimisation d&rsquo;image \u00e0 l&rsquo;aide du package artisansweb\/image-optimizer<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-implementer-le-telechargement-de-blocs-en-php\/\" title=\"Comment impl\u00e9menter le t\u00e9l\u00e9chargement de blocs en PHP\" >Comment impl\u00e9menter le t\u00e9l\u00e9chargement de blocs en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-lire-du-texte-a-partir-d-une-image-en-php\/\" title=\"Comment lire du texte \u00e0 partir d'une image en PHP\" >Comment lire du texte \u00e0 partir d&rsquo;une image en PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Souhaitez-vous impl\u00e9menter la fonction de glisser-d\u00e9poser de plusieurs fichiers sur votre site Web\u00a0? Dans cet article, nous \u00e9tudions comment ajouter un t\u00e9l\u00e9chargeur de fichiers qui permet de<\/p>\n","protected":false},"author":1,"featured_media":21646,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[245],"tags":[844],"class_list":["post-24874","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24874"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24874\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21646"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}