Как определить размер загрузки файла, разрешенный параметрами php, с помощью php-скрипта?
Загрузка ограничена тремя параметрами: upload_max_filesize , post_max_size и memory_limit . Ваша загрузка выполняется только в том случае, если она не выводит один из них.
Функция ini_get () предоставляет вам короткую руку ограничения и должна быть преобразована в первую очередь. Thx для 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
Используйте ini_get
для получения текущего значения конфигурации:
ini_get('upload_max_filesize')
Вы также можете изменить этот размер во время выполнения с помощью файла .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-файл
более подробно прочитайте эту статью
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); }
Вот одна функция, реализующая оригинальную идею от 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 МБ
Вы можете установить максимальный размер загрузки файлов, используя 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