Aqui vou mostrar um script básico para enviar arquivos utilizado o PHP. Funciona dessa forma:

Você envia o arquivo através de um formulário comum, utilizando um campo tipo “file”. Lembre-se na tag form você deve incluir o atributo enctype=”multipart/form-data”.

Depois que o arquivo é enviado (no exemplo abaixo o arquivo foi enviado para a própria página, mas você pode colocar a parte de HTML em uma página, e a parte de PHP em outra sem problemas), ele é movido para a pasta final com a função move_uploaded_files do PHP. Lembre-se que é necessário dar um chmod 777 no diretório que irá receber o arquivo.

No programa que utilizo (Filezilla) e na maioria dos programas de FTP, basta clicar com o botão direito na pasta  ou arquivo e ir em “Permissões” para mudar o CHMOD.

A variável $_FILES[“arquivo”][“tmp_name”] é o nome temporário do arquivo. É o nome que o servidor dá ao arquivo assim que o recebe. $_FILES[“arquivo”][“name”] é o nome original do arquivo.

Veja o exemplo abaixo:

<?php
### SCRIPT PARA UPLOAD DE ARQUIVOS ####
### DESENVOLVIDO POR: TIAGO PASSOS ####
### VOXTIAGO ARROBA GMAIL PONTO COM ###

if ($_FILES["arquivo"]["tmp_name"]) {

   // ESSE EH O NOME TEMPORARIO DO ARQUIVO
   $tmp_name = $_FILES["arquivo"]["tmp_name"];

   // INFORME O DIRETORIO PARA ONDE O ARQUIVO SERA ENVIADO
   // LEMBRE-SE QUE É NECESSÁRIO DAR CHMOD 777 NESSE DIRETÓRIO
   $diretorio = "upload/";

   $nome_do_arquivo = $diretorio . $_FILES["arquivo"]["name"];

   if (move_uploaded_file($tmp_name, $nome_do_arquivo)) {

      ?><script type="text/javascript">alert("Arquivo enviado");</script><?php

   } else {

      ?><script type="text/javascript">alert("Arquivo não enviado");</script><?php

   }

}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Enviar arquivos com PHP</title>
</head>
<body>

<form id="envia_arquivo" method="post" enctype="multipart/form-data">
Foto:<br />
<input type="file" name="arquivo" id="arquivo" size="40" /><br />
<input type="submit" value="Enviar!" />
</form>

</body>
</html>