Open In App

How to move a file into a different folder on the server using PHP?

The move_uploaded_file() function and rename() function is used to move a file into a different folder on the server. In this case, we have a file already uploaded in the temp directory of server from where the new directory is assigned by the method. The file temp is fully moved to a new location. The move_uploaded_file() ensures the safety of this operation by allowing only those files uploaded through PHP to be moved. Thus to move an already uploaded file we use the rename() method.

Syntax:



move_uploaded_file ( string $Sourcefilename, string $destination ) : bool
rename ( string $oldname, string $newname [, resource $context ] ) : bool

Example: This example is a code which uploads a file in a directory names Uploads and then it changes its path to another directory named as New.

Upload.html






<!DOCTYPE html>
<html>
  
<head>
    <title>
         Move a file into a different
         folder on the server
    </title>
</head>
  
<body>
    <form action="upfile.php" method="post"
            enctype="multipart/form-data">
          
        <input type="file" name="file" id="file">
          
        <br><br>
          
        <input type="submit" name="submit" value="Submit">
    </form>
</body>
  
</html>                    

upfile.php




<?php
  
// The target directory of uploading is uploads
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uOk = 1;
  
if(isset($_POST["submit"])) {
      
    // Check if file already exists
    if (file_exists($target_file)) {
        echo "file already exists.<br>";
        $uOk = 0;
    }
      
    // Check if $uOk is set to 0 
    if ($uOk == 0) {
        echo "Your file was not uploaded.<br>";
    
      
    // if uOk=1 then try to upload file
    else {
          
        // $_FILES["file"]["tmp_name"] implies storage path
        // in tmp directory which is moved to uploads
        // directory using move_uploaded_file() method
        if (move_uploaded_file($_FILES["file"]["tmp_name"],
                                            $target_file)) {
            echo "The file ". basename( $_FILES["file"]["name"])
                        . " has been uploaded.<br>";
              
            // Moving file to New directory 
            if(rename($target_file, "New/"
                        basename( $_FILES["file"]["name"]))) {
                echo "File moving operation success<br>";
            }
            else {
                echo "File moving operation failed..<br>";
            }
        }
        else {
            echo "Sorry, there was an error uploading your file.<br>";
        }
    }
}
  
?>

Note: The directories Uploads and New are already existing once and thus you will have to make them if they are not available inside the server.


Code running:

Code running with use of rename method (Moving to New)


Important methods:


Article Tags :