Olá Pessoal, vamos dando sequência a série de dicas sobre variáveis no PHP. Estamos falando sobre as super globais e hoje falaremos sobre a super global $_FILES[]. Esta super global é utilizada para nos auxiliar a enviar arquivos para o servidor onde roda a nova aplicação. São os famosos upload de arquivo.

Como sabemos, quando acessamos um site na verdade estamos fazendo uma requisição ao servidor que nos retorna um conteúdo HTML que o Browser reenderiza e exibe para nós a página. Então não temos qualquer acesso direto ao servidor, não podemos simplesmente copiar e colocar um foto no servidor. Então como enviar uma foto que esta na minha máquina para o servidor? Temos que fazer o upload desta foto ou deste arquivo para o servidor.

Do lado cliente, ou seja, no HTML temos que inserir um elemento para o usuário selecionar o arquivo. Observe o codigo abaixo:

<HTML>
<HEAD>
<TITLE>
</TITLE>
</HEAD>
<BODY>
<H1><CENTER>Upload de Arquivos</CENTER></H1>
<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="upload.php">
Arquivo 1:<INPUT TYPE=FILE SIZE=60 NAME="FILE1"><BR>
<BR>
<INPUT TYPE=SUBMIT VALUE="Upload!">
</FORM>
</BODY>
</HTML>

O Código acima irá exibir a página mostrada abaixo. Nela nos temos 1 caixa de upload para que possamos enviar algum arquivo para o servidor. Atente para o nome do controle: FILE1. Ele será usado em nossa super global.

Antes de qualquer coisa temos que saber que esta super global é também um array porém um array bidimensional ou uma matriz como queira. Assim temos que informar duas chaves nesta array. A primeira é o nome do controle que usamos para fazer o upload, no nosso caso FILE1, e a segunda chave seria o dado que queremos recuperar como o nome do arquivo, tamanho e etc.  Abaixo temos a lista das chaves que podemos passar para nossa super global.


$_FILES['NomeDoControle']['name']
    O nome original do arquivo no computador do usuário.

$_FILES['NomeDoControle']['type']
    O tipo mime do arquivo, se o browser deu esta informação. Um exemplo pode ser "image/gif".

$_FILES['NomeDoControle']['size']
    O tamanho, em bytes, do arquivo.

$_FILES['NomeDoControle']['tmp_name']
    O nome temporário do arquivo, como foi guardado no servidor.

$_FILES['NomeDoControle']['error']
    O código de erro associado a este upload de arquivo. ['error'] foi adicionado no PHP 4.2.0

Não esqueça que 'NomeDoControle' deve ser substituido pelo nome do controle HTML que vai submeter o arquivo. No nosso caso o controle seria FILE1. Agora observe como ficaria o Script upload.php.

<?php
 
$currentdir=getcwd();
 
$target_path = $currentdir ."/arquivos/".basename($_FILES['FILE1']['name']);
  if (
move_uploaded_file($_FILES['
FILE1']['tmp_name'], $target_path)) {
    echo
"O Arquivo "basename( $_FILES['
FILE1']['name']). " foi enviado com sucesso<br><br>";
  } else {
    echo
"Erro ao enviar o arquivo!<br><br>";
  }
?>

Bem pessoal o codigo e bem simples. Usamos a super global para recuperar o nome do arquivo original e com ela montamos o caminho para onde a imagem será submetido ($target_path). Depois usamos a função move_uploaded_file para movermos o arquivo temporário para o destino final.

Pessoal eu fico por aqui, até a próxima Quick !!!  Abraços.