quarta-feira, 18 de janeiro de 2012

Tutorial: Upload de Arquivos Simples.



Como foi dito ontem, vou agora fazer um tutorial de como fazer uploads de arquivos. Quem não leu o artigo sobre a variável reservada $_FILES, leia, para ter uma base do que vai se passar por aqui. Aqui vou usar o exemplo de upload de Fotos.





Primeiramente vamos criar a página HTML cujo vai ter o formulário de Upload.

<html>
<head>
<title>Formulario de Upload</title>
</head>
<body>
<form action="process.php" method="POST" enctype="multipart/form-data">
<label> Arquivo: </label><input type="file" name="arquivo">
<input type="submit" value="Enviar">
</form>
</html>


Agora, vamos para o arquivo process.php, que é o que vai fazer upload do arquivo. Nele, vamos fazer algumas verificações, como o tipo do arquivo e tamanho. por exemplo.

<?php
//Aqui vamos fazer as verificações.
if (is_uploaded_file($_FILES["arquivo"]["tmp_name"])) { 
   //Verificamos se o arquivo foi enviado
   //Se sim, faz algumas verificações
 if ($_FILES["arquivo"]["type"]!="image/png" && $_FILES["arquivo"]["type"]!="image/gif" && $_FILES["arquivo"]["type"]!="image/jpg" && $_FILES["arquivo"]["type"]!="image/jpeg") {
      //Aqui faz a verificação que o tipo do arquivo é uma Imagem, se entrar aqui, isso quer dizer 
      //que o arquivo enviado não é uma imagem
      echo "Imagem Invalida";
 } elseif($_FILES["arquivo"]["size"]>2097152) { 
  //Aqui verificamos se o arquivo é maior que 2MB
  //Lembrando que o $_FILES["size"], retorna o tamanho
  //DO arquivo em bytes, então 2097152 é 2MB
  echo "Imagem Maior que 2MB";
 } else {
      //Caso não pare nos filtros anteriores, faz o upload do arquivo.
      $path = dirname(__FILE__) . "/"  . $_FILES["arquivo"]["name"];

      //Essa variavel path, é pra onde as fotos serão enviadas
      //A função dirname, recupera o valor do um caminho, passando como paramentro
      //A Constante __FILE__ que significa o arquivo atual. Então no final
      //Vamos recueprar o valor do diretório atual do arquivo process.php

       if (move_uploaded_file($_FILES["arquivo"]["tmp_name"], $path)) {
    echo "Arquivo Enviado com Sucesso";
       } else {
    echo "Erro ao enviar o arquivo";
       }
 }

} else {
 echo "Erro ao processar o upload, Arquivo nao foi enviado";
}
?>
Resumindo...

No código PHP, recebemos o arquivo enviado pelo formulário HTML. Fazemos as verificações do tipo do arquivo e do tamanho dele e também usamos a função "is_uploaded_file()" para verficar se o arquivo foi mesmo enviado via HTTP POST, para aí sim, enviarmos o arquivo para o servidor.

Notas: No caso de o arquivo não estar sendo enviado, mesmo estando dentro dos paramentros, deve-se verificar a permissão do diretório. No Linux, deve-se dar a permissão 775 e também colocar o usuário do apache(www-data) como um dos donos com o comando "chown .www-data /diretorio" no diretóio

No Windows, deve dar permissão total na pasta, para poder gravar os arquivos.

Então é isso galera, é assim que se faz um upload simples de arquivo.

Abraços!

Nenhum comentário:

Postar um comentário