Pesquisar
Faça uma pergunta »

PHP - Atualizar arquivos

Março 2015



O PHP possibilita o gerenciamento de arquivos enviados (upload) graças ao formulário HTML.


Formulário de envio de arquivos


A primeira coisa a fazer é criar um formulário HTML que, ao abrir uma janela, permitará a escolha do arquivo a enviar:
FORM method="POST" action="[seu arquivo PHP para fazer upload.php]" ENCTYPE="multipart/form-data"> 
          <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048> 
          <INPUT type=file name="nome do arquivo"> 
          <INPUT type=submit value="enviar"> 
</FORM>


É fundamental não esquecer a ENCTYPE="multipart/form-data" ! Caso contrário, o formulário não terá nenhum efeito.

Além disso, o campo MAX_FILE_SIZE indica o tamanho máximo do arquivo a ser enviado pelo navegador mas, isto não é o bastante para garantir que os arquivos enviados não ultrapassarão um determinado tamanho na medida em que nem todos os navegadores levam em conta este tamanho. O valor do tamanho máximo do arquivo enviado é ajustável no disco rígido dentro a pasta de configuração "php.ini".

Configuração do PHP para fazer upload


O arquivo de configuração « php.ini » contém diretivas que ajustam e que autorizam ou não o envio de arquivos através de um formulário:

file_uploads= On/Off autoriza ou não o envio de arquivos.
upload_tmp_dir = diretório define temporáriamente o diretório, possibilitando a recepção do arquivo enviado.
upload_max_filesize = 2M define o tamanho máximo permitido do arquivo. Se este limite for ultrapassado, o servidor enviará um alerta de erro.
post_max_size indica o tamanho máximo de dados enviados por formulário. Esta diretiva tem primazia sobre o upload_max_filesize ; assim, certifique-se que você tem post_max_size superior a upload_max_filesize

Se você não tiver acesso à configuração (no caso de um site hospedado em um servidor do provedor de acesso ou de uma hospedagem compartilhada), pode-se verificar a configuração graças à função phpinfo() :

<? 
  phpinfo(); 
?>

Recuperação do arquivo com PHP


O arquivo e suas informações podem ser encontrados através da variável superglobal $_FILES[].
Para afixar o seu conteúdo, utilize o seguinte script:
<pre><? print_r($_FILES); ?></pre>

A saída deste código será da seguinte forma :

Array 
( 
    [nome_do_arquivo] => Array 
        ( 
            [name] => MaBelleImage.jpg 
            [type] => image/jpg 
            [tmp_name] => chemin_complet_du_fichier_uploadé 
            [error] => 0 
            [size] => 1000 
        ) 
)


No caso acima, trata-se de uma imagem JPEG pesando 1 Mo.


Os campos $_FILES[name], $_FILES[type], $_FILES|error], $_FILES[size] permitem testar o tipo de arquivo, seu tamanho , seu nome e verificar se houve erros.

Assim, você pode corrigir os erros da seguinte maneira:

<?       
if ($_FILES['nome do arquivo']['error']) { 
          switch ($_FILES['nome_do_arquivo']['error']){ 
                   caso 1: // UPLOAD_ERR_INI_SIZE 
                   echo"O arquivo ultrapassa o limite autorizado pelo servidor(arquivo php.ini) !"; 
                   break; 
                   caso 2: // UPLOAD_ERR_FORM_SIZE 
                   echo " O arquivo ultrapassa o limite autorizado no formulário HTML !"); 
                   break; 
                   caso 3: // UPLOAD_ERR_PARTIAL 
                   echo "O envio do arquivo foi interrompido durante a transferência!"; 
                   break; 
                   caso 4: // UPLOAD_ERR_NO_FILE 
                   echo "O arquivo que você enviou tem um tamanho zero !"); 
                   break; 
          } 
} 
else { 
 // $_FILES['nome_do arquivo']['error'] vale 0 ou seja UPLOAD_ERR_OK 
 // o que significa que não houve erro 
} 
?>




Com o move_uploaded_files() é possível transferir uma imagem do diretório temporário a um diretório de destino :

<? 

if ((isset($_FILES['nom_du_fichier']['arquivo'])&&($_FILES['nome_do arquivo']['error'] == UPLOAD_ERR_OK)) { 
$caminho_destino = '/var/www/arquivos/'; 
move_uploaded_file($_FILES['nome_do_arquivo']['tmp_name'], $caminho_destino.$_FILES['nome_do_arquivo']['name']); 
} 
?>

Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Php-atualizar-arquivos.pdf

A ver igualmente

Na mesma categoria

PHP - Uploading files
Por deri58 em 25 de novembro de 2008
PHP - Subir archivos
Por Carlos-vialfa em 1 de junho de 2008
PHP - Upload de fichiers
Por Jeff em 6 de novembro de 2004
PHP - Upload file
Por nane77 em 26 de agosto de 2009
Artigo original publicado por Jeff. Tradução feita por pintuda. - última modificação por ninha25
Este documento, intitulado « PHP - Atualizar arquivos »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.