Bem-vindo ao site John Pires!

PHP – Fundamentos Básicos

Início/Curso/PHP – Fundamentos Básicos

PHP – upload de arquivo



Um script PHP pode ser usado com um formulário HTML para permitir que os usuários carreguem arquivos no servidor. Inicialmente, os arquivos são carregados em um diretório temporário e, em seguida, realocados para um destino de destino por um script PHP.

As informações na página phpinfo.php descrevem o diretório temporário que é usado para uploads de arquivos como upload_tmp_dir e o tamanho máximo permitido de arquivos que podem ser enviados é declarado como upload_max_filesize. Esses parâmetros são definidos no arquivo de configuração do PHP php.ini

O processo de upload de um arquivo segue estas etapas:

  • O usuário abre a página que contém um formulário HTML com arquivos de texto, um botão de navegação e um botão de envio.
  • O usuário clica no botão de navegação e seleciona um arquivo para carregar do PC local.
  • O caminho completo para o arquivo selecionado aparece no campo de texto e, em seguida, o usuário clica no botão enviar.
  • O arquivo selecionado é enviado para o diretório temporário no servidor.
  • O script PHP que foi especificado como o manipulador de formulário no atributo action do formulário verifica se o arquivo chegou e o copia para um diretório pretendido.
  • O script PHP confirma o sucesso para o usuário.




Como de costume, ao gravar arquivos, é necessário que os locais temporário e final tenham permissões definidas que habilitem a gravação de arquivos. Se qualquer um deles for definido como somente leitura, o processo falhará.

Um arquivo carregado pode ser um arquivo de texto ou arquivo de imagem ou qualquer documento.

Criação de um formulário de upload



O seguinte código HTM abaixo cria um formulário de upload. Este formulário tem o atributo method definido como post e o atributo enctype é definido como multipart / form-data:

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size =$_FILES['image']['size'];
      $file_tmp =$_FILES['image']['tmp_name'];
      $file_type=$_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152){
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true){
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action="" method="POST" enctype="multipart/form-data">
         <input type="file" name="image" />
         <input type="submit"/>
      </form>
      
   </body>
</html>

Criação de um script de upload



Existe uma variável global do PHP chamada $ _FILES. Esta variável é um array de dupla dimensão associado e mantém todas as informações relacionadas ao arquivo carregado. Portanto, se o valor atribuído ao atributo de nome da entrada no formulário de upload fosse arquivo, o PHP criaria as seguintes cinco variáveis:

  • $ _FILES [‘file’] [‘tmp_name’] – o arquivo carregado no diretório temporário no servidor web.
  • $ _FILES [‘arquivo’] [‘nome’] – o nome real do arquivo enviado.
  • $ _FILES [‘arquivo’] [‘tamanho’] – o tamanho em bytes do arquivo enviado.
  • $ _FILES [‘arquivo’] [‘tipo’] – o tipo MIME do arquivo enviado.
  • $ _FILES [‘arquivo’] [‘erro’] – o código de erro associado a este upload de arquivo.

Exemplo

O exemplo abaixo deve permitir o upload de imagens e devolver o resultado como informações do arquivo enviado.

<?php
   if(isset($_FILES['image'])){
      $errors= array();
      $file_name = $_FILES['image']['name'];
      $file_size = $_FILES['image']['size'];
      $file_tmp = $_FILES['image']['tmp_name'];
      $file_type = $_FILES['image']['type'];
      $file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
      
      $extensions= array("jpeg","jpg","png");
      
      if(in_array($file_ext,$extensions)=== false){
         $errors[]="extension not allowed, please choose a JPEG or PNG file.";
      }
      
      if($file_size > 2097152) {
         $errors[]='File size must be excately 2 MB';
      }
      
      if(empty($errors)==true) {
         move_uploaded_file($file_tmp,"images/".$file_name);
         echo "Success";
      }else{
         print_r($errors);
      }
   }
?>
<html>
   <body>
      
      <form action = "" method = "POST" enctype = "multipart/form-data">
         <input type = "file" name = "image" />
         <input type = "submit"/>
			
         <ul>
            <li>Sent file: <?php echo $_FILES['image']['name'];  ?>
            <li>File size: <?php echo $_FILES['image']['size'];  ?>
            <li>File type: <?php echo $_FILES['image']['type'] ?>
         </ul>
			
      </form>
      
   </body>
</html>



Deixe um comentário

ENTRAR

Esqueceu a senha