{"id":25143,"date":"2021-05-26T09:56:00","date_gmt":"2021-05-26T06:56:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25143"},"modified":"2021-10-18T03:10:21","modified_gmt":"2021-10-18T00:10:21","slug":"trascina-e-rilascia-il-caricamento-di-piu-file-utilizzando-javascript-e-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/trascina-e-rilascia-il-caricamento-di-piu-file-utilizzando-javascript-e-php\/","title":{"rendered":"Trascina e rilascia il caricamento di pi\u00f9 file utilizzando JavaScript e PHP"},"content":{"rendered":"<p>In passato, ho scritto un articolo <a href=\"https:\/\/themewp.inform.click\/it\/trascina-e-rilascia-il-caricamento-di-file-utilizzando-javascript-e-php\/\" title=\"Drag and Drop File Upload utilizzando JavaScript e PHP\" >Drag and Drop File Upload utilizzando JavaScript e PHP<\/a>. Alcuni lettori hanno chiesto di scrivere un articolo sull&#8217;aggiunta di un uploader di file che consente agli utenti di caricare pi\u00f9 file con le funzionalit\u00e0 di trascinamento della selezione.<\/p>\n<p>Durante il lavoro su un&#8217;applicazione Web potrebbe essere necessario caricare pi\u00f9 file con un unico uploader sul modulo. Pu\u00f2 aiutare un utente a caricare file singoli o multipli in una volta sola. A loro non piace caricare pi\u00f9 file uno per uno. Fornire una tale funzione di caricamento file aggiunge una migliore esperienza utente e velocizza anche la tua applicazione.<\/p>\n<p>In questo articolo, ti mostro come aggiungere questo caricatore di file senza utilizzare alcun plug-in di trascinamento della selezione esterno. Caricher\u00f2 i file usando Ajax. Significa che i file verranno caricati sul server senza ricaricare un&#8217;intera pagina.<\/p>\n<h3>Iniziare<\/h3>\n<p>Come ho detto, non utilizzeremo alcun plug-in esterno per la funzione di trascinamento della selezione. Scriver\u00f2 tutto il codice da zero. \u00c8 molto pi\u00f9 facile. Non ci sono cose complesse in esso. Basta seguire i passaggi seguenti e il gioco \u00e8 fatto.<\/p>\n<p>Creiamo un file <code>index.html<\/code>e aggiungiamo il codice qui sotto.<\/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>Qui ho incluso <code>style.css<\/code>e <code>custom.js<\/code>in cui aggiungeremo un codice correlato. Poich\u00e9 intendiamo utilizzare Ajax, ho incluso una libreria jQuery.<\/p>\n<p>Per fornire un&#8217;interfaccia utente di base per il nostro uploader di file aggiungiamo alcune propriet\u00e0 CSS. Naturalmente, puoi aggiungere il tuo CSS per dare un aspetto diverso all&#8217;uploader di file.<\/p>\n<p><strong>stile.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>Dopo questo, dovresti vedere il tuo uploader di file come sotto lo screenshot:<\/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=\"Trascina e rilascia il caricamento di pi\u00f9 file utilizzando JavaScript e PHP\" ><\/a><\/p>\n<h3>Trascina e rilascia pi\u00f9 file usando JavaScript e PHP<\/h3>\n<p>Sei impostato con l&#8217;interfaccia utente di base. Ora possiamo andare avanti e scrivere il codice effettivo per JavaScript e PHP che carica i file su un server. Nel nostro HTML ho aggiunto 2 metodi upload_file() e file_explorer() che richiamano rispettivamente i file di rilascio e selezionano i file.<\/p>\n<p>Definiamo questi metodi e passiamo i file allo script lato server che carica i file su un server.<\/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>Infine scrivi un codice lato server per il caricamento del <code>ajax.php<\/code>file nel file.<\/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>Questo codice crea una directory &quot;uploads&quot; sul tuo server e memorizza tutti i file all&#8217;interno di questa directory. Durante la memorizzazione dei file su un server ci occupiamo di mantenere il nome univoco di ogni file caricato utilizzando la funzione PHP <code>uniqid()<\/code>.<\/p>\n<p>Si tratta di caricare pi\u00f9 file utilizzando la funzione di trascinamento. Spero che tu lo sappia. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/ottimizzazione-delle-immagini-utilizzando-il-pacchetto-di-ottimizzazione-delle-immagini-web-di-artigiani\/\" title=\"Ottimizzazione delle immagini utilizzando il pacchetto di ottimizzazione delle immagini\/web di artigiani\" >Ottimizzazione delle immagini utilizzando il pacchetto di ottimizzazione delle immagini\/web di artigiani<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-implementare-il-caricamento-di-blocchi-in-php\/\" title=\"Come implementare il caricamento di blocchi in PHP\" >Come implementare il caricamento di blocchi in PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-leggere-il-testo-dall-immagine-in-php\/\" title=\"Come leggere il testo dall'immagine in PHP\" >Come leggere il testo dall&#8217;immagine in PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi implementare la funzione di trascinamento e rilascio di pi\u00f9 file sul tuo sito web? In questo articolo, studiamo come aggiungere uploader di file che consentono di<\/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":[248],"tags":[846],"class_list":["post-25143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25143"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25143\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21646"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}