在 PHP 中移動檔案到一個資料夾

Nimra Ejaz 2022年5月13日
在 PHP 中移動檔案到一個資料夾

本文將解釋將檔案從一個資料夾移動到另一個資料夾的方法。這可能看起來很棘手,但這樣做非常容易。你所需要的只是練習 PHP 的原生函式 rename。它的名字暗示它通過重新命名檔案或目錄來工作。一開始可能會讓你感到困惑,但重新命名檔案的路徑最終會將其移動到新位置。

在 PHP 中使用 rename() 函式將檔案移動到另一個資料夾

為了使用 rename 功能,我們需要指定要移動的檔案的源位置和目標位置。源位置是儲存檔案的當前目錄,目標位置是我們要移動檔案的位置。讓我們在一個例子的幫助下討論它!

假設我們有兩個名為 source_directorydest_directory 的目錄。我們在 source_directory 中有一個名為 move-test.txt 的檔案,我們希望使用 PHP 將它移動到 dest_directory

讓我們看一下下面的程式碼:

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

上述程式碼的解釋如下。

  1. 檔案的當前路徑首先使用變數 $currentLocation 指定。
  2. 然後,指定新位置以及檔名。簡而言之,它是我們希望將檔案移動到的新位置。
  3. 如果你想給你的檔案一個不同的名字,可以通過用你的新檔名改變變數 $newLocation 中的檔名 move-test.txt 來完成。
  4. 重新命名函式有兩個引數:$currentLocation 為移動操作前的檔案路徑,$newLocation 為成功移動到所需位置後的新檔案路徑。

重要注意事項

如果移動操作成功,rename 函式返回 TRUE。這裡需要注意的兩個重要事項是:

  1. 要移動的檔案必須存在。你應該確保你嘗試移動的檔案必須存在。否則,它會丟擲一個警告:系統找不到指定的檔案。
  2. 可以覆蓋現有檔案。rename 函式會導致覆蓋現有檔案,這意味著如果 $newLocation 是某個現有檔案的名稱,則在使用 rename 函式進行移動操作後,現有檔案將被覆蓋。

檢查檔案是否存在

為了在將檔案移動到另一個資料夾之前檢查檔案是否存在,你可以使用 PHP 提供的 is_file 函式。

使用 is_file 函式檢查檔案是否存在的程式碼示例如下:

<?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";
  }
?>

在上面的例子中,is_file($currentLocation) 用於在呼叫執行移動操作的重新命名函式之前檢查我們希望移動的檔案是否存在。

檢查檔案是否未被覆蓋

以下程式碼示例說明了確保在將檔案從一個位置移動到另一個位置時不會覆蓋現有檔案的方法:

<?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";
}	
?>

在上面的示例中,is_file($newLocation) 用於檢查是否存在另一個檔案,該檔案在呼叫 rename 函式時可能會被覆蓋。

相關文章 - PHP File