Yo lo he hecho asi amigo pero es lo msimo que tu tienes :( no se que pasa , lo que si te comento es que cuando estaba trabajando en eso no me acuerdo muy bien mira y te explico, cuanto trabajaba en local lo hice y me monto bien y me funcionaba , cuando lo monte al servidor en internet me daba errores y descubri que me todo invertir la barra , si en local estaba : fotos/ en internet me toco poner fotos\ para que no me diera error no me acuerdo si en local estaba con \ o con /
Código PHP:
$uploaddir = 'fotos/';
$uploadfile = $uploaddir . $HTTP_POST_FILES['fichero']['name'];
if (move_uploaded_file($HTTP_POST_FILES['fichero']['tmp_name'], $uploadfile)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}