Mover archivo a una carpeta en PHP

Nimra Ejaz 8 octubre 2023
Mover archivo a una carpeta en PHP

Este artículo explicará el método para mover un archivo de una carpeta a otra. Puede parecer complicado, pero es muy fácil hacerlo. Todo lo que necesita es practicar la función nativa de PHP rename. Su nombre implica que funciona renombrando un archivo o directorio. Puede confundirlo al principio, pero cambiar el nombre de la ruta de un archivo finalmente lo mueve a la nueva ubicación.

Use la función rename() para mover un archivo a otra carpeta en PHP

Para utilizar la función rename(), debemos especificar las ubicaciones de origen y destino del archivo que se va a mover. La ubicación de origen es el directorio actual donde se guarda el archivo, y la ubicación de destino es donde queremos mover nuestro archivo. ¡Discutámoslo con la ayuda de un ejemplo!

Supongamos que tenemos dos directorios llamados source_directory y dest_directory. Tenemos un archivo llamado move-test.txt en el source_directory, y deseamos moverlo a dest_directory usando PHP.

Echemos un vistazo al siguiente código:

<?php
$currentLocation = 'source_directory/move-test.txt';
$newLocation = 'dest_directory/move-test.txt';
$moved = rename($currentLocation, $newLocation);
if($moved)
{
    echo "File moved successfully";
}
?>

La explicación del código mencionado anteriormente es la siguiente.

  1. La ruta actual del archivo se especifica primero usando la variable $currentLocation.
  2. Luego, se especifica la nueva ubicación junto con el nombre del archivo. En palabras más simples, es la nueva ubicación a la que deseamos mover nuestro archivo.
  3. Si desea darle a su archivo un nombre diferente, puede hacerlo cambiando el nombre de archivo move-test.txt en la variable $newLocation con su nuevo nombre de archivo.
  4. La función de cambio de nombre toma dos parámetros: $currentLocation para la ruta del archivo antes de mover la operación y $newLocation para la nueva ruta del archivo después de moverlo con éxito a la ubicación deseada.

Consideraciones importantes

La función rename devuelve TRUE, si la operación de movimiento es exitosa. Dos cosas importantes a tener en cuenta aquí son:

  1. El archivo a mover debe existir. Debe asegurarse de que el archivo que está tratando de mover debe existir. De lo contrario, arrojará una advertencia que indica: El sistema no puede encontrar el archivo especificado.
  2. Se puede sobrescribir un archivo existente. La función de cambio de nombre puede resultar en la sobrescritura de un archivo existente, lo que significa que si $newLocation es el nombre de algún archivo existente, luego de la operación de movimiento con la función de cambio de nombre, el archivo existente se sobrescribirá.

para comprobar si existe el archivo

Para verificar si el archivo existe o no antes de moverlo a otra carpeta, puede usar la función is_file proporcionada por PHP.

El ejemplo de código para verificar si el archivo existe o no usando la función is_file es el siguiente:

<?php
  $currentLocation = 'source_directory/move-test.txt';
  $newLocation = 'dest_directory/move-test.txt';
  if(is_file($currentLocation))
  {
    $moved = rename($currentLocation, $newLocation);
  }
  if($moved)
  {
    echo "File moved successfully";
  }
?>

En el ejemplo anterior, is_file($currentLocation) se usa para verificar si el archivo que deseamos mover existe o no antes de llamar a la función de cambio de nombre que realiza la operación de movimiento.

para comprobar si el archivo no se sobrescribe

El método para garantizar que un archivo existente no se sobrescriba al mover un archivo de una ubicación a otra se explica en el siguiente ejemplo de código:

<?php
$currentLocation = 'source_directory/move-test.txt';
$newLocation = 'dest_directory/move-test.txt';
if(!is_file($newLocation))
{
  $moved = rename($currentLocation, $newLocation);
}
 if($moved)
{
 echo "File moved successfully";
}	
?>

En el ejemplo anterior, is_file($newLocation) se usa para verificar si existe otro archivo que podría sobrescribirse cuando se llama a la función rename.

Artículo relacionado - PHP File