PHP 文件系统 move_uploaded_file() 函数



PHP 文件系统move_uploaded_file()函数用于将上传的文件移动到新的位置。如果文件名不是有效的上传文件,则不会执行任何操作并返回 false。如果文件名是有效的上传文件,但由于某种原因无法移动,则不会执行任何操作并返回 false。此外,还会发出警告。

语法

以下是 PHP 文件系统move_uploaded_file()函数的语法:

bool move_uploaded_file ( string $filename , string $destination )

参数

以下是move_uploaded_file()函数所需的必选参数:

序号 参数 & 说明
1

$filename(必填)

这是上传文件的名称。

2

$destination(必填)

这是移动文件的目标位置。

返回值

成功时返回 TRUE。

如果源文件不是正确的上传文件,则不会执行任何操作,move_uploaded_file() 返回 false。

如果源文件是有效的上传文件,但由于任何原因无法移动,则不会执行任何操作,move_uploaded_file() 返回 false。此外,还会发出警告。

PHP 版本

move_uploaded_file()函数首次作为核心 PHP 4.0.3 的一部分引入,并与 PHP 5、PHP 7 和 PHP 8 良好兼容。

示例

这是一个基本的示例,演示 PHP 文件系统move_uploaded_file()函数如何将上传的文件移动到指定位置。

<?php
   $uploads_dir = "/PhpProjects/uploads";
   foreach($_FILES["pictures"]["error"] as $key => $error) {
      if($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
        $name = basename($_FILES["pictures"]["name"][$key]);
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
       }
   }
?> 

输出

代码本身没有输出消息。

示例

这是一个额外的示例,演示如何使用move_uploaded_file()函数将单个文件上传到特定目录。

<?php
   if ($_SERVER['REQUEST_METHOD'] === 'POST') {
      $target_dir = "/PhpProjects/uploads/";
      $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
         echo "The file " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.";
      } else {
         echo "Unable to upload file because there is an error uploading your file.";
      }
   }
?>

// HTML form to upload file
<form action="" method="post" enctype="multipart/form-data">
    Select file to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form> 

输出

这将生成以下输出:

The file image.jpg has been uploaded.

示例

这是一个额外的示例,演示如何使用move_uploaded_file()函数上传文件,并将文件大小限制在 2 MB 以内。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $target_dir = "/PhpProjects/uploads";
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
    $maxFileSize = 2 * 1024 * 1024; // 2MB in bytes

    // Check if file size is below the limit
    if ($_FILES["fileToUpload"]["size"] <= $maxFileSize) {
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "The file " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " has been uploaded.";
        } else {
            echo "Unable to upload file because there is an error uploading your file.";
        }
    } else {
        echo "Unable to upload file because your file is too large.";
    }
}   
?>

// HTML form to upload file
<form action="" method="post" enctype="multipart/form-data">
    Select file to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload File" name="submit">
</form> 

输出

这将生成以下输出:

The file myfile.txt has been uploaded.

备注

以下是关于move_uploaded_file()函数的一些重要说明:

  • 此函数可以检查给定的文件是否为有效的上传文件,这意味着它是通过 PHP 的 HTTP POST 上传流程上传的。如果文件有效,则可以将其移动到目标位置。
  • 当使用上传文件进行的操作存在风险时,通常会使用这种验证方式,这些风险包括:将文件内容泄露给用户或系统中的其他用户。

总结

move_uploaded_file()方法是一个内置函数,用于将上传文件的存储位置移动到指定位置。此函数仅适用于使用 PHP 的 HTTP POST 上传流程上传的文件。如果目标文件已存在,它将被覆盖。

php_function_reference.htm
广告