Upload de arquivos – PHP

upload file

Neste artigo, vamos criar um script simples de fazer upload de arquivos, utilizando somente o PHP para obter esse resultado.

Muitos sistemas permitem o upload de arquivos a partir de um simples formulário HTML, e quem nunca se perguntou como realmente funciona a lógica desse pequeno sistema, mais a frente veremos como é simples ter um sistema parecido.

Simples não quer dizer que seja básico, vamos criar algumas validações para se tornar mais perto da realidade do que necessitamos.

Upload de arquivos – HTML

Antes de começar vamos criar um simples formulario, utilizando o enctype=”multipart/form-data”, sendo que de resto é como se fosse um forme normal.

<form method="post" action="index.php" enctype="multipart/form-data">
    <p><h2>Arquivo</h2></p>
    <p><input type="file" name="arquivo" /></p>
    <p><input type="submit" value="Enviar" /></p>
</form>

Upload de arquivos – PHP

Agora vem a parte dinâmica deste sistema, comentaremos as varias fases do código para que se entenda toda a lógica utilizada.

$CEN['dir'] = 'uploads/'; // Pasta onde o arquivo vai ser salvo
$CEN['size'] = 1024 * 1024 * 2; // Tamanho máximo do arquivo (em Bytes)
$CEN['ext'] = array('jpg', 'png', 'gif'); // Array com as extensões permitidas
$CEN['ren'] = FALSE; // Se true, o arquivo será salvo como .jpg e um nome único

// Array com os tipos de erros de upload do PHP
$CEN['error'][0] = "Maior que o limite do PHP.";
$CEN['error'][1] = "Maior que o limite do HTML.";
$CEN['error'][2] = "Upload feito parcialmente.";
$CEN['error'][3] = "Erro, upload não iniciado.";
$CEN['error'][4] = "Upload efetuado.";


if ($ _FILES['arquivo']['error'] != 4) { // Ve se algum erro foi ativado
    die("Não foi possível fazer o upload, erro:
" . $CEN['error'][$ _FILES['arquivo']['error']]); exit; // termina o script } $ext = strtolower(end(explode('.', $ _FILES['arquivo']['name']))); if (array_search($ext, $CEN['ext']) === false) { // Faz a verificação da extensão do arquivo echo "Só são aceites as seguintes extensões: jpg, png ou gif."; } else if ($CEN['size'] < $ _FILES['arquivo']['size']) { // Ve o tamanho do arquivo echo "Só é aceito no maximo arquivos de 2Mb."; } else { // Tudo OK if ($CEN['ren'] == true) { $nome_final = time() . '.jpg'; // cria-se um nome unico com extensão .jpg } else { $nome_final = $ _FILES['arquivo']['name'] . time();// Mantém o nome original e adiciona-se um identificado, para o caso de varios arquivos terem nomes iguais } if (move _uploaded_file($ _FILES['arquivo']['tmp_name'], $CEN['dir'] . $nome_final)) { // mover arquivo para pasta pre definida echo "Sucesso ao realizar o upload!<br />"; // sucesso echo '<a href="' . $CEN['dir'] . $nome_final . '">Visualizar arquivo</a>'; } else { // erro, verifique a pasta(e permissões da mesma) echo "Erro ao enviar, tente novamente"; } }

Pode fazer o download do conteúdo deste artigo, aqui.

Até à próxima, comente!

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *