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

如何使用PHP函数编写文件上传功能

发布时间:2023-06-22 09:22:21

文件上传功能是Web开发中最常用的功能之一,无论是上传图片、文档还是音频视频文件,都需要依靠后端的PHP程序来实现文件的上传。在PHP中,我们可以使用多种函数来实现文件上传功能,下面是一些常用的函数。

1. $_FILES

PHP中用于处理文件上传的全局变量是$_FILES,它是一个关联数组。在HTML表单中使用type="file"的input控件上传文件时,它将文件信息存入$_FILES数组中,并传递给后台的PHP程序。该数组包括文件名、文件类型、文件大小和临时文件名等信息。我们可以通过$_FILES['file']['name']获取文件名,通过$_FILES['file']['tmp_name']获取临时文件名。

2. move_uploaded_file()

当用户通过Web表单上传文件时,PHP程序将把它存储在临时目录中,我们需要将它移动到指定的目录中。move_uploaded_file($tmp_file, $new_file)函数用于移动上传的文件。其中,$tmp_file参数是临时文件名,$new_file参数是目标文件名,可包括路径和文件名。

3. is_uploaded_file()

is_uploaded_file($tmp_file)函数用于判断指定文件是否在HTTP POST上传中被上传。它返回TRUE或FALSE。如果文件是通过HTTP POST上传的,返回TRUE,否则返回FALSE。

4. $_FILES['file']['error']

$_FILES全局变量的一个重要部分是$_FILES['file']['error'],它返回上传文件中的错误代码。用于区分上传的文件到底是成功的、失败的还是部分成功;它是一个0到8之间的值。其中,0表示成功,1表示上传的文件超过了php.ini文件中upload_max_filesize指令的最大值,2表示上传文件的大小超过了HTML表单中指定的MAX_FILE_SIZE指令的值,3表示文件只有部分被上传,4表示没有文件被上传,5表示上传文件类型不符,6表示上传文件后缀名不符,7表示文件上传中断,8表示文件上传被禁止。

5. pathinfo()

pathinfo()函数用于获取文件路径的信息,例如文件扩展名和文件名。

以上就是PHP中几个常用的文件上传函数,下面介绍一个简单的文件上传示例。

文件上传示例:

1.首先需要在HTML表单中添加一个type="file"的input控件来实现文件上传:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="上传文件">
</form>

2.然后在后台编写upload.php文件来处理文件上传:

<?php
// 获取上传文件信息
$file_name = $_FILES['file']['name'];
$file_tmp_name = $_FILES['file']['tmp_name'];
$file_size = $_FILES['file']['size'];
$file_error = $_FILES['file']['error'];

// 判断文件上传错误代码是否为0
if ($file_error == 0) {
    // 判断文件大小是否超过2M
    if ($file_size > 2 * 1024 *1024) {
        echo '上传文件大小不能超过2M';
        exit;
    }
    // 获取文件扩展名
    $file_ext = pathinfo($file_name, PATHINFO_EXTENSION);
    // 允许上传的文件扩展名
    $allowed_ext = array('jpg', 'jpeg', 'gif', 'png');

    // 判断上传文件的扩展名是否在允许的范围内
    if (!in_array($file_ext, $allowed_ext)) {
        echo '只允许上传jpg,jpeg,gif,png格式的图片';
        exit;
    }
    // 将上传的文件移动到指定目录
    $new_file_name = date('YmdHis') . '_' . rand(10000, 99999) . '.' . $file_ext;
    $uploaded_path = 'uploads/' . $new_file_name;
    if (move_uploaded_file($file_tmp_name, $uploaded_path)) {
        echo '文件上传成功';
    } else {
        echo '上传文件失败';
    }
} else {
    echo '文件上传出错,错误代码为:' . $file_error;
}
?>

文件上传示例中的PHP代码通过获取$_FILES数组中的相关信息对上传的文件进行验证和处理,并将文件移动到指定的目录中。在验证中,通过判断文件大小和文件类型来过滤掉一些不合法的文件,从而保证了系统的安全性。在移动文件时,我们可以通过当前时间和随机数来生成一个新的文件名,避免出现文件重名的问题。

总之,PHP提供了很多函数来帮助我们实现文件上传功能。通过相应的函数和验证机制,我们可以完成安全、可靠、高效的文件上传操作。