Ok yo hago el upload y muevo el archivo de la siguiente forma
Código PHP:
<?
//envio
If ($_POST){
$fecharegistro = $_POST[fecharegistro]; //fecha del registro
$fechapub = $_POST[fechapub]; //fecha en que se publica
$archivo = $_FILES['archivo']['name']; //nombre del archivo
$descripcion = $_POST[descripcion]; //breve descripción del file
$ruta= "define_tu_ruta_en_el_disco";
$uploaddir = "$ruta/";
$uploadfile1 = $uploaddir . $_FILES['archivo']['name'];
if (!move_uploaded_file($_FILES['archivo']['tmp_name'], $uploadfile1)) {
print "ERROR: ocurrio un error al hacer upload al archivo";
print_r($_FILES);
}
//inserto los datos q me traigo del form datos y los fijo en la tabla para luego hacer relacion registro -> archivo y poder descargarlo
$sql =mysql_query("INSERT INTO tabla (fecharegistro, fechapub, archivo, descripcion) VALUES ('$fecharegistro', '$fechapub', '$archivo', '$descripcion')") or die(mysql_error());
$result = mysql_query($sql);
?>
Nota: Cabe destacar que esto esta probado en linux y el directorio donde esta la variable $ruta debe tener los permisos 777 para que funcione bien, bueno al menos en mi caso me tocó asi.
espero q le dé una idea