(PHP 4 >= 4.0.3, PHP 5)
move_uploaded_file — Mueve un archivo subido a una nueva ubicación
$filename
   , string $destination
   )
   Esta función intenta asegurarse de que el archivo designado por
   filename es un archivo subido válido (lo que significa
   que fue subido mediante el mecanismo de subida HTTP POST de PHP). Si
   el archivo es válido, será movido al nombre de archivo dado por
   destination.
  
El orden de comprobación es especialmente importante si hay cualquier posibilidad de que cualquier cosa hecha con los archivos subidos pueda revelar su contenido al usuario, o incluso a otros usuarios en el mismo sistema.
filenameEl nombre de archivo del archivo subido.
destinationEl destino del archivo movido.
   Devuelve TRUE en caso de éxito.
  
   Si filename no es un archivo válido subido,
   no sucederá ninguna acción, y
   move_uploaded_file() devolverá
   FALSE.
  
   Si filename es un archivo subido válido, pero
   no puede ser movido por algunas razones, no sucederá ninguna acción, y
   move_uploaded_file() devolverá
   FALSE. Adicionalmente, se emitirá un aviso.
  
Ejemplo #1 Subida de múltiples archivos
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = $_FILES["pictures"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
?>
Nota:
move_uploaded_file() es compatible tanto con el safe mode como con open_basedir. Sin embargo, las restricciones sólo están impuestas para la ruta
destpara permitir mover los archivos subidos en los cualesfilenamepueda tener conflictos con tales restricciones. move_uploaded_file() garantiza la seguridad de esta operación permitiendo que sólo aquellos archivos subidos a través de PHP sean movidos.
Si el arhivo destino ya existe se sobrescribirá.