Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Múltiplos Uploads com PHP, Mysql e Ajax - #10 Iniciando com Ajax

17/11/2019

Na aula de hoje iniciaremos com o ajax propriamente dito, fazendo o upload dos arquivos.

Finalizando estilo do formulário

Como falamos anteriormente, a barra de progresso e as tabelas de arquivos virão de forma dinâmica. Para tanto, colocaremos um display none nesses elementos para que eles apareçam somente quando forem acionados através de um upload:

.bar{display:none; width:100%; height: 20px; border: 1px solid #ccc; padding: 2px;}
.progress{width: 30%; height: 100%;  background: #05546b;}

.tableUpload{display:none; width: 100%; text-align: center;}
.tableUpload thead tr{ color:#fff; font-weight: bold;}
.tableUpload thead th{background: #333; padding: 5px 0;}
.tableUpload thead th:first-child{width: 70%;}
.tableUpload tbody tr:nth-child(2n){background: #ddd;}
.tableUpload tbody td{padding: 5px 0;}

.divFiles{display:none;}

No nosso formulário ainda, faremos um pequeno ajuste no nosso botão de upload:

<input type="file" name="files[]" id="files" multiple>

Implementando o ajax

Dentro do diretório lib/js criaremos o arquivo javascript.js

(function readyJS(win,doc){
    'use strict';

    //Get absolute path
    function getRoot()
    {
        return win.location.protocol+"//"+doc.location.hostname+"/";
    }

    //Upload
    function upload()
    {
        let ajax=new XMLHttpRequest();
        let formData=new FormData(doc.querySelector('#form'));
        ajax.open('POST',getRoot()+'controllers/controllerUpload');
        ajax.send(formData);
    }

    if(doc.querySelector('#files')){
        let files=doc.querySelector('#files');
        files.addEventListener('change',upload,false);
    }
})(window,document);

Após criar o arquivo javascript.js, não esqueça de chamá-lo no seu arquivo principal:

<script src="<?php echo DIRPAGE.'lib/js/javascript.js'; ?>"></script>

Gravando a variável

Vamos receber nossa variável no arquivo variables.php

if(isset($_FILES['files'])){$files=$_FILES['files']; $count=count($files['name']);}else{$files="";$count="";}

controllerUpload

O controllerUpload é o arquivo PHP que fará a movimentação do arquivo no servidor:

<?php
for($i=0; $i<$count; $i++){
    move_uploaded_file($files['tmp_name'][$i],DIRREQ.'img/files/'.$files['name'][$i]);
}

Não esqueça de criar a pasta files dentro de /img

Verificando a capacidade de upload do servidor

Um detalhe que tem que ser verificado quando trabalhamos com upload de arquivos é a capacidade do servidor de envio de arquivos. Alguns servidores aceitam 20MB, outros aceitam 64MB e outros aceitam tamanhos de arquivos maiores. Se você tentar enviar um arquivo com tamanho superior ao permitido pelo seu servidor vai dar erro. Verifique com a sua hospedagem.

No localhost, configure seu php pra aceitar o tamanho que você deseja. Para isso, altere os parâmetros post_max_size e upload_max_filesize

Por hoje é só! Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Múltiplos Uploads com PHP, Mysql e Ajax - #9 Inserindo dados na tabela Ads
Nesta aula iremos aprender a inserir os dados dentro da nossa tabela ads. Para isso, criaremos nossa ClassAds, helpers variables e o controllerAds
Saiba mais!
Múltiplos Uploads com PHP, Mysql e Ajax - #11 ClassUpload
Neste tutorial setaremos algumas configurações para retirar os espaços vazios dos nomes dos arquivos, bem como criaremos um nome randômico.
Saiba mais!
MultiUploads
No curso de múltiplos uploads utilizando php, mysql e ajax trabalharemos com o envio de diferentes arquivos, barra de progresso e sem utilização de plugins.
Saiba mais!