Bueno... para subir archivos desde un formulario, debes seguir los siguientes pasos:
1- El form debe tener un formato parecido a esto:
<form enctype="multipart/form-data">
<input type="file" name="foto">
</form>
2- En PHP recivirás los datos, de todos los archivos que hayas enviado, dentro del array $_FILES (depende de como tengas configurado el php.ini).
$_FILES['foto'] en este caso, tiene toda la info sobre el archivo enviado (print_r($_FILES['foto'] te los muestra).
Con esto deberías chequear que no se haya producido un error al enviarlo, y que el archivo tenga tamaño:
if(!$_FILES['foto']['error'] && $_FILES['foto']['size'])
3- Por último, copiar el archivo a la nueva ubicación:
move_uploaded_file($_FILES['foto']['temp_name'], 'direccion/nombre_archivo');
El primer parámetro, envía el nombre con el cual el servidor la almacena entre los archivos temporales. El segundo es la ruta de la carpeta donde se guardará y el nombre del archivo (incluyendo extension).
Por otro lado, te recomiendo que uses la función "getimagesize()" para chequear algunos datos (en caso de que sea imagen), como el tipo de archivo.
Espero qeu te ayude.
Altareum.