PHP

multi upload with validation in PHP

02.12.2022 2 dəq oxuma
<?php

// 'required|max:700|mimes:image/jpg,image/jpeg,image/png'
function uploader($input_name = 'images',$validation = '')
{
    if (isset($_FILES[$input_name]))
    {
        $validations    = explode('|',$validation);
        $message        = [];
        $do             = true;

        foreach ($_FILES[$input_name]['tmp_name'] as $key=>$tmp)
        {
            $errors         = [];
            $error          = $_FILES[$input_name]['error'][$key];
            $filesize       = $_FILES[$input_name]['size'][$key];
            $type           = $_FILES[$input_name]['type'][$key];

            foreach ($validations as $validation_item)
            {
                if ($validation_item == 'required')
                {
                    $file_required              = file_required($error);
                    $errors['required']         = $file_required['errors'];
                    if ($file_required['errors'])
                    {
                        $do                     = false;
                    }
                }

                if (strpos($validation_item,'max') !== false)
                {
                    $max_size = explode(':',$validation_item);
                    if (isset($max_size[1]))
                    {
                        $file_size              = custom_filesize($filesize,$max_size[1]);
                        $errors['max']          = $file_size['errors'];
                        if ($file_size['errors'])
                        {
                            $do                 = false;
                        }
                    }
                }

                if (strpos($validation_item,'mimes') !== false)
                {
                    $mimes = explode(':',$validation_item);
                    if (isset($mimes[1]))
                    {
                        $mimes                  = mimes($type,$mimes[1]);
                        $errors['mimes']        = $mimes['errors'];
                        if ($mimes['errors'])
                        {
                            $do                 = false;
                        }
                    }
                }
            }

            $message[$key] = $errors;
        }

        if($do)
        {
            foreach ($_FILES[$input_name]['tmp_name'] as $key=>$tmp)
            {
                $tmp_name   = $_FILES[$input_name]['tmp_name'][$key];
                $name       = $_FILES[$input_name]['name'][$key];
                $pathinfo   = pathinfo($name);
                $basename   = $pathinfo['basename'];
                $extension  = $pathinfo['extension'];
                $to         = 'uploads/images/'.md5($basename.time()).'.'.$extension;
                if (move_uploaded_file($tmp_name,$to))
                {
                    $message[$key]  = 'Ugurla yuklendi';
                }
                else
                {
                    $message[$key]  = 'Bir seyler yanlis gedir';
                }
            }
        }

        return $message;
    }
}

function file_required($error)
{
    if ($error > 0)
    {
        return [
            'errors'    => 'Fayl mütləqdir',
        ];
    }
    else
    {
        return [
            'errors'    => '',
        ];
    }
}

function custom_filesize($filesize,$max_size)
{
    if($filesize > $max_size * 1024)
    {
        return [
            'errors'    => 'Fayl ölçüsü maksimum '.$max_size.'KB ola bilər',
        ];
    }
    else
    {
        return [
            'errors'    => '',
        ];
    }
}


function mimes($type,$mimes)
{
    $mimes_array    = explode(',',$mimes);
    if($type != '' && !in_array($type,$mimes_array))
    {
        return [
            'errors'    => 'Faylın mime tipləri '.$mimes.' ola bilər',
            'do'        => false
        ];
    }
    else
    {
        return [
            'errors'    => '',
            'do'        => false
        ];
    }
}
 
Digər dildə: EN