📜  php 在上传前检查图像大小 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:37.098000             🧑  作者: Mango

PHP 在上传前检查图像大小

在Web应用程序中,用户上传图像的功能是非常常见的。然而,我们需要做一些检查,以确保上传的图像大小是合理的,并且不会超过我们所允许的大小。这可以通过PHP的一些库和函数实现。

获取上传的文件大小

在PHP中,我们可以使用$_FILES超全局变量来获取上传文件的相关信息。但是,我们需要注意的是,上传文件的大小以字节数表示。因此,我们需要将其转换为更容易阅读的格式(如KB,MB)。下面是一个示例:

$file_size = $_FILES['file']['size'];

function format_size($size)
{
    $units = array('B', 'KB', 'MB', 'GB', 'TB');
    $i = 0;
    while ($size >= 1024)
    {
        $size /= 1024;
        $i++;
    }   
    return round($size, 2) . ' ' . $units[$i];
}

echo format_size($file_size);

这个函数将连续循环除以1024,以便将字节数转换为更大的单位,例如KB,MB等。

检查上传文件大小

我们可以使用上面的代码来获取上传文件的大小。现在我们需要检查它是否超出了我们所允许的范围。为此,我们可以设置一个最大文件大小,并将其与上传文件的大小进行比较。如果上传文件的大小大于我们所允许的大小,则抛出一个异常或显示一个错误消息。下面是一个示例:

$max_file_size = 2 * 1024 * 1024; // 2MB

if ($_FILES['file']['size'] > $max_file_size)
{
    throw new Exception("上传文件太大,最大大小为 " . format_size($max_file_size) . "。");
}

这里我们设置一个$max_file_size变量,将其设置为2MB。如果上传文件的大小超过此值,则会抛出一个异常。您可以根据您的需要进行修改。

完整的代码示例

下面是完整的代码示例,包含了上面提到的所有代码:

function format_size($size)
{
    $units = array('B', 'KB', 'MB', 'GB', 'TB');
    $i = 0;
    while ($size >= 1024)
    {
        $size /= 1024;
        $i++;
    }   
    return round($size, 2) . ' ' . $units[$i];
}

$max_file_size = 2 * 1024 * 1024; // 2MB

if ($_FILES['file']['size'] > $max_file_size)
{
    throw new Exception("上传文件太大,最大大小为 " . format_size($max_file_size) . "。");
}

这个代码示例包括获取上传文件的大小以及检查其大小是否超过给定的最大文件大小。注意文件大小的单位和$max_file_size变量的值都是可以修改的,以适应您的需求。

结论

在Web应用程序中,通过实现一些简单的PHP代码,可以轻松地检查上传文件的大小。这些功能可以帮助我们避免上传过大的文件,从而保持服务器的可用性和稳定性。