Upload no PHP
Olá galerinha, hoje vamos ver como se faz upload de arquivos no php, é molezinha.
Arquivo HTML:
<form enctype="multipart/form-data" action="/upload.php" method="POST">
<label for = "arqUsuario">Imagem</label>
<input name="arqUsuario" type="file" />
<input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
<input type="submit" value="Send File" />
</form>
- O "tipo" do formulário tem que ser multipart/form-data, para fazer o upload lá no servidor.
- Um input do tipo file, responsavel por armazenar o endereço do arquivo na máquina do usuário, junto com ele vem um botão, que no FF o value é Browser, para procurar o arquivo, sem precisar digitar o endereço, porém não sei como mudar as características desse botão :(.
- Um input hidden com name MAX_FILE_SIZE, responsável por indicar o tamanho máximo permitido do arquivo que vai ser feito o upload.
- E é claro um submit para mandar o arquivo ao servidor e o php armazená-lo.
Agora no arquivo php:
$uploaddir = '/home/meusProjetos/upload/';
$arquivo = $_FILES['arqUsuario'];
$uploadfile = $uploaddir . basename($arquivo['name']);
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
echo "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif
ou png. Envie outro arquivo";
} else if($arquivo["size"] > $_POST["MAX_FILE_SIZE"]) {
echo "Arquivo em tamanho muito grande! Envie outro arquivo";
} else {
if (move_uploaded_file($arquivo['tmp_name'], $uploadfile)) {
echo "Arquivo válido e o upload feito.\n";
chmod($uploadfile , 0766);
} else {
echo "Não foi possivel fazer o upload!\n";
}
}
?>
Antes de explicar, o código acima existem algumas observações a serem feitas.
Obs1: No phpconfig, tem que estar autorizado o upload de arquivos, e também, deve ser verificado o tamanho máximo de upload, que por padrão é dois megas, dependendo da sua necessidade terá que aumentá-lo.
Obs2:Quando a página php, é chamada já foi feito o upload do arquivo, porém ele está em uma pasta temporária, o php só vai ser responsável de mudar o diretório e o nome do arquivo.
- $uploaddir é responsável pelo endereço definitivo do arquivo.
- A variável $arquivo que recebe $_FILES['userfile'], possui todos os valores do arquivo
- $uploadfile terá todo o caminho do arquivo
- no primeiro if é verificado se o tipo do arquivo é diferente à uma imagem dos tipos (pjpeg|jpeg|png|gif|bmp), se for, ele não move o arquivo para uma pasta definitiva.
- A instrução move_uploaded_file é a responsável por mover o arquivo de um diretório temporário para um definitivo (Oh! não me diga).
- a instrução chmod(), irá trocar as permissões do arquivo, isso se faz necessário, para visualizar e modificar os arquivos, o 0766 lhe dá permissão de alterar e remover.
Acho que está tudo explicadinho, nos mííííííííínimos detalhes.
fuiii...