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

文件上传函数-move_uploaded_file()的用法和示例

发布时间:2023-06-30 10:26:11

move_uploaded_file()是PHP中一个用于将上传的文件移动到新位置的函数。它的语法如下:

bool move_uploaded_file ( string $filename , string $destination )

其中,$filename是上传的文件的临时路径,$destination是文件移动的目标路径。

这个函数有几个注意点:

1. 上传的文件必须是通过POST请求上传的,并且使用了enctype="multipart/form-data"的表单。

2. 在调用move_uploaded_file()之前,需要先调用is_uploaded_file()函数来验证文件是否是通过合法的HTTP POST上传的。这是为了防止恶意的攻击者绕过后台验证直接访问move_uploaded_file()。

3. $destination参数可以是相对路径或绝对路径。如果是相对路径,则是相对于当前脚本所在的目录。

4. 如果用于存放上传文件的目录没有写入权限,move_uploaded_file()会失败。

在调用move_uploaded_file()函数之前,需要进行一些验证步骤。下面是一个简单的文件上传函数的示例:

<?php
function uploadFile($file) {
    $fileTmpPath = $file['tmp_name'];
    $fileName = $file['name'];
    $fileSize = $file['size'];
    $fileType = $file['type'];
    $fileError = $file['error'];

    // 验证文件是否是通过合法的HTTP POST上传的
    if (!is_uploaded_file($fileTmpPath)) {
        echo "非法文件上传!";
        return false;
    }

    // 移动文件到指定目录
    $destinationPath = "uploads/" . $fileName; // 假设目标目录是uploads
    if (move_uploaded_file($fileTmpPath, $destinationPath)) {
        echo "文件上传成功!";
        return true;
    } else {
        echo "文件上传失败!";
        return false;
    }
}

// 示例用法
if (isset($_FILES['file'])) {
    uploadFile($_FILES['file']);
}
?>

上面的示例中,首先从$_FILES数组中获取上传的文件的临时路径、文件名、大小、类型和错误码等信息。然后,通过调用is_uploaded_file()函数验证文件上传的合法性。

最后,通过将临时路径和目标路径传递给move_uploaded_file()函数,将上传文件移动到指定目录。如果移动成功,则返回true并显示"文件上传成功!";如果移动失败,则返回false并显示"文件上传失败!"。

这个示例只是一个最基本的演示,实际应用中还需要对上传的文件进行更严格的验证、限制文件类型和大小等操作,以确保系统的安全性。