Ola, Primeiramente, cade o
$file=$_FILES["nome_do_campo"];
?
Segundo, na sua variavel $file_name você não adicionou extensão nenhuma...
Sugiro você fazer assim, após colocar o $file=$_FILES["nome_do_campo"];
$name=explode(".",$file["name"]); // Abre o nome do arquivo em uma array, cada vez q encontrar um . no nome do arquivo.
$len=count($name); // Aqui você pega quantos elementos tem no array... Normalmente são só 2... Mas caso você tenha um nome tipo "arquivo.config.php" você terá 3...
$len--; //Decrementa a variavel $len, pois os indices do array começam em zero...
$extension=$name[$len]; // Pega o ultimo elemento do array, que no caso é a extensão....
$file_name=$var1.$var2.$categoria.$sub".".$extension; //Finalmente, renomeia...
$dest = $pasta."/".$file_name; //Escreve a pasta de destino
A partir daí, você usa a move_uploaded_file... Não se esqueça do tmp_name
if(!move_uploaded_file($file["tmp_name"], $dest)) {
echo "Não foi possível enviar o arquivo!";
exit();
} else {
echo "Arquivo enviado com sucesso!";
} Abraços, Eduardo.