{"id":27863,"date":"2021-05-26T18:53:00","date_gmt":"2021-05-26T15:53:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27863"},"modified":"2021-10-18T04:09:04","modified_gmt":"2021-10-18T01:09:04","slug":"arrastar-e-soltar-o-upload-de-arquivos-usando-javascript-e-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/arrastar-e-soltar-o-upload-de-arquivos-usando-javascript-e-php\/","title":{"rendered":"Arrastar e soltar o upload de arquivos usando JavaScript e PHP"},"content":{"rendered":"<p>Voc\u00ea est\u00e1 procurando integrar o recurso arrastar e soltar de upload de arquivos em seu site? Este recurso \u00e9 amig\u00e1vel e reduz os cliques dos usu\u00e1rios. Neste artigo, estudamos como adicionar funcionalidade para arrastar e soltar o upload de arquivos usando JavaScript e PHP. Voc\u00ea tamb\u00e9m ter\u00e1 entrada de arquivo para navegar em um arquivo.<\/p>\n<p>A interface de usu\u00e1rio final para upload de arquivo ser\u00e1 semelhante \u00e0 imagem abaixo.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20461-6081f57b5e9c0.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-20461-6081f57b5e9c0.png\" alt=\"Arrastar e soltar o upload de arquivos usando JavaScript e PHP\" ><\/a><\/p>\n<h3>Por que precisa do recurso Arrastar e Soltar para Upload de Arquivos?<\/h3>\n<p>Queremos sempre ter uma melhor experi\u00eancia do usu\u00e1rio no site. Oferecer o recurso de arrastar e soltar para fazer upload de arquivos \u00e9 uma op\u00e7\u00e3o f\u00e1cil de usar para seus usu\u00e1rios. Muitos sites populares como Facebook e WordPress j\u00e1 usam esse recurso.<\/p>\n<p>Este recurso parece melhor em compara\u00e7\u00e3o com a forma tradicional de upload de arquivos. Tamb\u00e9m melhora a experi\u00eancia do usu\u00e1rio, pois o usu\u00e1rio simplesmente arrasta o arquivo e o carrega em um servidor.<\/p>\n<p>Neste tutorial, daremos as duas op\u00e7\u00f5es aos usu\u00e1rios. Pode-se carregar o arquivo usando arrastar e soltar ou atrav\u00e9s da entrada do arquivo.<\/p>\n<p>Vou usar o Ajax para fazer upload de arquivos no lado do servidor. Usando Ajax, sua p\u00e1gina n\u00e3o ser\u00e1 carregada. Ele simplesmente envia o arquivo para o servidor em segundo plano.<\/p>\n<h3>Integrar uploader de arrastar e soltar<\/h3>\n<p>Para come\u00e7ar, vamos primeiro escrever o c\u00f3digo HTML. O c\u00f3digo HTML a seguir ter\u00e1 um cont\u00eainer para upload de arquivo. Ele tamb\u00e9m inclui um arquivo CSS e JS que criarei nas pr\u00f3ximas etapas.<\/p>\n<pre><code>&lt;link rel=\"stylesheet\" href=\"style.css\"&gt;\n&lt;div id=\"drop_file_zone\" ondrop=\"upload_file(event)\" ondragover=\"return false\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div id=\"drag_upload_file\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;Drop file here&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;or&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"button\" value=\"Select File\" onclick=\"file_explorer();\"&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" id=\"selectfile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n&lt;\/div&gt;\n\u00a0\n&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"custom.js\"&gt;&lt;\/script&gt;<\/code><\/pre>\n<p>No HTML acima, usei os 2 eventos &#8211; ondrop e onclick. Vou definir seus m\u00e9todos no <code>custom.js<\/code>arquivo. Antes disso, vamos adicionar o c\u00f3digo CSS no <code>style.css<\/code>arquivo.<\/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\u00a0width:50%;\n\u00a0\u00a0margin:0 auto;\n}\n#drag_upload_file p {\n\u00a0\u00a0text-align: center;\n}\n#drag_upload_file #selectfile {\n\u00a0\u00a0display: none;\n}<\/code><\/pre>\n<p>Nosso objetivo \u00e9 quando um usu\u00e1rio descarta ou procura um arquivo, o arquivo deve ser carregado no servidor. Para isso, voc\u00ea precisa escrever um c\u00f3digo JavaScript que pega um arquivo do lado do cliente e o envia ao servidor.<\/p>\n<p>Para lidar com esse fluxo, adicione o c\u00f3digo abaixo no <code>custom.js<\/code>arquivo.<\/p>\n<pre><code>var fileobj;\nfunction upload_file(e) {\n\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\u00a0\u00a0\u00a0fileobj = e.dataTransfer.files[0];\n\u00a0\u00a0\u00a0\u00a0ajax_file_upload(fileobj);\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\u00a0fileobj = document.getElementById('selectfile').files[0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ajax_file_upload(fileobj);\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();\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0form_data.append('file', file_obj);\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>O c\u00f3digo JavaScript escrito acima detecta automaticamente as op\u00e7\u00f5es escolhidas pelo usu\u00e1rio para enviar um arquivo. Finalmente, a fun\u00e7\u00e3o <code>ajax_file_upload()<\/code>pega o objeto de arquivo e o passa para o arquivo Ajax.<\/p>\n<h4>Carregar arquivo no servidor<\/h4>\n<p>No arquivo Ajax, escreverei o c\u00f3digo real que carrega o arquivo no servidor. Crie um arquivo chamado <code>ajax.php<\/code>e adicione o c\u00f3digo abaixo nele.<\/p>\n<pre><code>&lt;?php\n$arr_file_types = ['image\/png', 'image\/gif', 'image\/jpg', 'image\/jpeg'];\n\u00a0\nif (!(in_array($_FILES['file']['type'], $arr_file_types))) {\n\u00a0\u00a0\u00a0\u00a0echo \"false\";\n\u00a0\u00a0\u00a0\u00a0return;\n}\n\u00a0\nif (!file_exists('uploads')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('uploads', 0777);\n}\n\u00a0\nmove_uploaded_file($_FILES['file']['tmp_name'], 'uploads\/'. time(). '_'. $_FILES['file']['name']);\n\u00a0\necho \"File uploaded successfully.\";<\/code><\/pre>\n<p>Este c\u00f3digo PHP verifica primeiro se a pasta chamada &#8216;uploads&#8217; existe em um servidor. Caso contr\u00e1rio, ele cria um diret\u00f3rio de &#8216;uploads&#8217; e move o arquivo dentro dele. Voc\u00ea pode ajustar este caminho de diret\u00f3rio de acordo com sua necessidade.<\/p>\n<p>Espero que voc\u00ea entenda como adicionar o upload de arquivos de arrastar e soltar usando PHP e JavaScript. Deixe-me saber sua opini\u00e3o e sugest\u00f5es no coment\u00e1rio abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/arrastar-e-soltar-o-upload-de-varios-arquivos-usando-javascript-e-php\/\" title=\"Arrastar e soltar o upload de v\u00e1rios arquivos usando JavaScript e PHP\" >Arrastar e soltar o upload de v\u00e1rios arquivos usando JavaScript e PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/upload-de-arquivo-ajax-com-php-e-jquery\/\" title=\"Upload de arquivo Ajax com PHP e jQuery\" >Upload de arquivo Ajax com PHP e jQuery<\/a><br \/>\n<a href=\"https:\/\/artisansweb.net\/ajax-file-upload-php-jquery\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a>&#8211; <a href=\"https:\/\/artisansweb.net\/ajax-file-upload-php-jquery\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/themewp.inform.click\/pt-pt\/tinypng-compactar-imagens-usando-php\/\" title=\"TinyPNG compactar imagens usando PHP\">TinyPNG compactar imagens usando PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo, mostramos como adicionar o upload de arquivos de arrastar e soltar para o seu site. Junto com o recurso de arrastar e soltar, tamb\u00e9m oferecemos a op\u00e7\u00e3o de escolher o arquivo.<\/p>\n","protected":false},"author":1,"featured_media":21623,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[210,250],"tags":[848],"class_list":["post-27863","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-9","category-javascript-9","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27863"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27863\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}