Как определить максимальное ограничение загрузки файлов в php

Как можно определить размер загрузки файла, разрешенный параметрами php, с помощью php script?

Ответ 1

Загрузка ограничена тремя параметрами: upload_max_filesize, post_max_size и memory_limit. Ваша загрузка выполняется только в том случае, если она не выводит один из них.

Функция ini_get() предоставляет вам короткую руку ограничения и должна быть преобразована в первую очередь. спасибо до AoEmaster для этого.

function return_bytes($val) {
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);
    switch($last) 
    {
        case 'g':
        $val *= 1024;
        case 'm':
        $val *= 1024;
        case 'k':
        $val *= 1024;
    }
    return $val;
}

function max_file_upload_in_bytes() {
    //select maximum upload size
    $max_upload = return_bytes(ini_get('upload_max_filesize'));
    //select post limit
    $max_post = return_bytes(ini_get('post_max_size'));
    //select memory limit
    $memory_limit = return_bytes(ini_get('memory_limit'));
    // return the smallest of them, this defines the real limit
    return min($max_upload, $max_post, $memory_limit);
}

Источник: http://www.kavoir.com/2010/02/php-get-the-file-uploading-limit-max-file-size-allowed-to-upload.html

Ответ 2

Используйте ini_get, чтобы получить текущее значение конфигурации:

ini_get('upload_max_filesize')

Ответ 3

Вы также можете изменить этот размер во время выполнения с использованием файла .htaccess без необходимости изменения файла php.ini

php_value upload_max_filesize 1224M
php_value post_max_size 1224M
php_value max_execution_time 3000
php_value max_input_time 3000

скопируйте этот код и поместите свой файл, затем сохраните этот файл с индексным файлом, а затем запустите проект, который вы также можете загрузить 1GB файл.

для более подробной информации прочитать эту статью

Ответ 4

function return_bytes($val) 
{
    $val = trim($val);
    $last = strtolower($val[strlen($val)-1]);

    switch($last) 
    {
        case 'g':
        $val *= 1024;
        case 'm':
        $val *= 1024;
        case 'k':
        $val *= 1024;
    }

    return $val;
}

function get_upload_max_filesize()
{
    $max_upload = return_bytes(ini_get('upload_max_filesize'));
    $max_post = return_bytes(ini_get('post_max_size'));
    return min($max_upload, $max_post, $memory_limit);
}

Ответ 5

Вот одна функция, реализующая оригинальную идею от AoEmaster. Функция возвращает целое число (количество байтов).

function _GetMaxAllowedUploadSize(){
    $Sizes = array();
    $Sizes[] = ini_get('upload_max_filesize');
    $Sizes[] = ini_get('post_max_size');
    $Sizes[] = ini_get('memory_limit');
    for($x=0;$x<count($Sizes);$x++){
        $Last = strtolower($Sizes[$x][strlen($Sizes[$x])-1]);
        if($Last == 'k'){
            $Sizes[$x] *= 1024;
        } elseif($Last == 'm'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        } elseif($Last == 'g'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        } elseif($Last == 't'){
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
            $Sizes[$x] *= 1024;
        }
    }
    return min($Sizes);
}

Если вы хотите, вы можете объединить его со следующей функцией, которая отображает вывод как текст, читаемый человеком.

function _Byte2Size($bytes,$RoundLength=1) {
    $kb = 1024;         // Kilobyte
    $mb = 1024 * $kb;   // Megabyte
    $gb = 1024 * $mb;   // Gigabyte
    $tb = 1024 * $gb;   // Terabyte

    if($bytes < $kb) {
        if(!$bytes){
            $bytes = '0';
        }
        return (($bytes + 1)-1).' B';
    } else if($bytes < $mb) {
        return round($bytes/$kb,$RoundLength).' KB';
    } else if($bytes < $gb) {
        return round($bytes/$mb,$RoundLength).' MB';
    } else if($bytes < $tb) {
        return round($bytes/$gb,$RoundLength).' GB';
    } else {
        return round($bytes/$tb,$RoundLength).' TB';
    }
}

Используйте его следующим образом:

echo 'Max allowed upload size: '._Byte2Size(_GetMaxAllowedUploadSize());

Результат может быть:

Максимальный допустимый размер загрузки: 500 МБ

Ответ 6

Вы можете установить максимальный размер загрузки файлов, используя ini_set()

  ini_set('post_max_size', '64M');
  ini_set('upload_max_filesize', '64M');

или используя файл .htaccess

php_value upload_max_filesize 
php_value post_max_size