欢迎访问宙启技术站
智能推送

PHP文件上传函数详解:move_uploaded_file,is_uploaded_file,$_FILES

发布时间:2023-06-12 10:32:42

在 Web 开发中,文件上传是一个常见的需求。PHP 提供了一些函数和变量来处理文件上传。本文将介绍 PHP 文件上传函数中的三个重要部分:move_uploaded_file,is_uploaded_file 和 $ _FILES。

1. move_uploaded_file

move_uploaded_file 函数用于将上传的文件移动到服务器上的目标位置。它的语法如下:

bool move_uploaded_file ( string $filename , string $destination )

$filename是已上传文件的临时文件名,$destination是目标文件的路径和名称。

该函数的返回值为布尔值:如果文件成功移动,则返回 true,否则返回 false。

注意:在使用该函数移动文件之前,我们必须确保目标位置可写。

2. is_uploaded_file

is_uploaded_file 函数用于检查文件是否是通过 HTTP POST 上传的。它的语法如下:

bool is_uploaded_file ( string $filename )

该函数的返回值为布尔值:如果这个文件是通过 HTTP POST 上传的,则返回 true,否则返回 false。

注意:在使用该函数检查文件之前,我们必须确保文件已经上传成功,并且使用了 POST 方法。

3. $ _FILES

$ _FILES 是 PHP 中一个预定义的超全局变量,用于获取上传文件的信息。它是一个数组,可以通过键名来获取文件信息。

每个上传的文件都有以下信息:

- $ _FILES ['name']:原始文件名。

- $ _FILES ['type']:文件的 MIME 类型。

- $ _FILES ['tmp_name']:文件的临时名称,当文件上传成功后,该临时文件将被删除。

- $ _FILES ['error']:文件上传时发生的错误代码。

- $ _FILES ['size']:上传文件的大小(字节)。

示例代码:

<form action="upload.php" method="post" enctype="multipart/form-data">

    <input type="file" name="fileToUpload" id="fileToUpload">

    <input type="submit" value="上传文件" name="submit">

</form>

<?php

if(isset($_POST["submit"])) {

    $target_dir = "uploads/";

    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

    $uploadOk = 1;

    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

    

    // Check if file already exists

    if (file_exists($target_file)) {

        echo "文件已经存在了。";

        $uploadOk = 0;

    }

    

    // Check file size

    if ($_FILES["fileToUpload"]["size"] > 500000) {

        echo "对不起,文件太大了,不能上传。";

        $uploadOk = 0;

    }

    

    // Allow certain file formats

    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

    && $imageFileType != "gif" ) {

        echo "对不起,只能上传 JPG, JPEG, PNG & GIF 文件。";

        $uploadOk = 0;

    }

    

    // Check if $uploadOk is set to 0 by an error

    if ($uploadOk == 0) {

        echo "对不起,文件没有上传成功。";

        // if everything is ok, try to upload file

    } else {

        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {

            echo "文件 ". basename( $_FILES["fileToUpload"]["name"]). " 已上传成功。";

        } else {

            echo "对不起,文件上传失败。";

        }

    }

}

?>

上述代码展示了一个文件上传的基本示例,通过使用 $ _FILES 变量和 move_uploaded_file 函数,我们可以轻松地获取和处理上传文件。