Desenvolvimento - PHP

Fazendo um simples upload de arquivo com php

Este pequeno tutorial para iniciantes ensina como fazer um script em php para enviar um arquivo para um servidor WEB.

por Magno Costa



Bem pessoal esse e meu primeiro tutorial portando se alguém tiver alguma duvida tentarei esclarecer só me mandarem um e-mail.

Bom pessoal o tutorial é bem simples, você já deve ter visitado algum site onde você pode mandar arquivos para internet (servidores web).

Então e isso que eu vou tenta explicar aqui!

Mãos a obra??

Primeiro passo!

Bom o primeiro passo é a construção do HTML que tem como objetivo localizar o arquivo no seu computador.
<html>
<body>
<form action="envia_foto.php" method="post" enctype="multipart/form-data">
<input type="file" name="Arquivo" id="Arquivo"><br>
<input type="submit" value="Enviar">
<input type="reset" value="Apagar">
</form>
</body>
</html>
Aí está o código do nosso primeiro passo, podemos observar que é um formulário simples, com algumas propriedades adicionais, como por exemplo na tag <form>

Adicionamos o parâmetro enctype="multipart/form-data".Também foi utilizado o campo file <input type="file" name="Arquivo" id="Arquivo"> onde este e o campo onde você vai indicar o caminho do arquivo.

Exemplo:


Segundo passo:

Criar a página envia_foto.php que vai fazer toda a mecânica, essa pagina e responsável por enviar o arquivo para o servidor WEB.

Lembrando que é importante que o arquivo enviado permaneça com o mesmo nome que ele tem no seu computador.Por exemplo podemos pegar o arquivo foto1.jpg, quando esse arquivo for enviado para o servidor ele tem q ter esse mesmo nome, pois se isso não acontecer poderemos ter futuros problemas quando quisermos localizar esse arquivo.CONCORDA?

Pois se você não sabe que nome o servidor deu a esse arquivo como que você vai encontra ele?

Então o objetivo dessa pagina e fazer com que o arquivo seja enviado para o servidor e que permaneça com o mesmo nome que ele tem na sua maquina.Ok?

Mãos a Obra!!

Esse objetivo é muito simples e fácil de se cumprir com a linguagem php
Vamos utilizar apenas 3 linhas.

1º vamos criar uma variável para armazenar o endereço do arquivo no seu computador.
$nome_temporario=$_FILES["Arquivo"]["tmp_name"];

Explicando:
Supondo que no seu computador existe uma foto nomeada "foto1.jpg" e ela se encontra na pasta "C:\fotos\" você quer enviá-la para o servidor web, após executar o comando acima o valor da variável $nome_temporario será:

"C:\wamp\nome_temporario_gerado pelo_php.tmp".

Porém é importante que o arquivo enviado permaneça com o mesmo nome que ele tem no seu computador.

2º Vamos criar uma segunda variável onde essa receberá como valor o nome do arquivo.
$nome_real=$_FILES["Arquivo"]["name"];

3º Agora que já temos a localização do arquivo no seu computador e o nome real dele, podemos copiar o arquivo do seu computador para o servidor WEB. O código e bem simples quem já utilizou o MS-DOS do windows se familiariza.

Copy("Endereço_local_do aquivo", "Endereço_de_destino/nome_que_o_arquivo_recebera");

No nosso caso o código ficará assim:

copy($nome_temporario,$nome_real);

OBS:
Com esse código enviamos o arquivo para o mesmo diretório onde se encontra o nosso código php.
Eu particularmente prefiro criar uma pasta separada para receber esse arquivos.Por exemplo vamos supor que estamos enviando imagens para o servidor então criamos uma pasta chamada "imagens", o código então ficará assim:

copy($nome_temporario,"imagens/$nome_real");

Então concluindo nosso tuto o código da pagina envia_arquivo.php ficara assim:
<html>
<head>
<title>Envia foto</title>
</head>
<body>
<?php
$nome_temporario=$_FILES["Arquivo"]["tmp_name"];
$nome_real=$_FILES["Arquivo"]["name"];
copy($nome_temporario,"imagens/$nome_real");
?>
</body>
</html>
OBS: É importante lembrar que já que estamos enviando um arquivo para uma pasta chamada "imagens" esta pasta tem que estar criada, se ela não estiver criada respeitando maiúsculas e minúsculas o código apresentará erro.

Bom é isso ai pessoal apesar de ser bem fácil de fazer, o tutorial ficou bem extenso, é que tentei detalhar cada passo para que este não seja copiado e sim entendido.
Magno Costa

Magno Costa