-
PHP - Fundamentos Básicos
-
Lecture 1PHP – Tutorial
-
Lecture 2PHP – Introdução
-
Lecture 3PHP – Configuração de Ambiente
-
Lecture 4PHP – Visão geral da sintaxe
-
Lecture 5PHP – Tipos de Variáveis
-
Lecture 6PHP – Tipos de Constantes
-
Lecture 7PHP – Tipos de Operadores
-
Lecture 8PHP – Tomada de Decisão
-
Lecture 9PHP – Tipos de Loop
-
Lecture 10PHP – Arrays
-
Lecture 11PHP – Strings
-
Lecture 12PHP – Conceitos Web
-
Lecture 13PHP – Métodos GET e POST
-
Lecture 14PHP – Inclusão de Arquivo
-
Lecture 15PHP – Arquivos e I/O
-
Lecture 16PHP – Funções
-
Lecture 17PHP – Cookies
-
Lecture 18PHP – Sessions
-
Lecture 19PHP – Enviando e-mails usando PHP
-
Lecture 20PHP – upload de arquivo
-
Lecture 21PHP – Padrão de Codificação
-
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>