diff --git a/extend/base/admin/controller/system/ConfigBase.php b/extend/base/admin/controller/system/ConfigBase.php index d5e00f6..b263cb8 100644 --- a/extend/base/admin/controller/system/ConfigBase.php +++ b/extend/base/admin/controller/system/ConfigBase.php @@ -36,13 +36,16 @@ class ConfigBase extends AdminController public function save() { $this->checkPostRequest(); - $post = $this->request->except(['group_name'], 'post'); - $group_name = $this->request->post('group_name'); + $storage_bytes_keys = ['upload_allow_size']; try { foreach ($post as $key => $val) { + + if (in_array($key, $storage_bytes_keys)) { + $val = parse_bytes($val); + } if (empty($group_name)) { $this->model ->where('name', $key) diff --git a/extend/base/admin/view/system/config/upload.html b/extend/base/admin/view/system/config/upload.html index 0f6b1de..fd20e04 100644 --- a/extend/base/admin/view/system/config/upload.html +++ b/extend/base/admin/view/system/config/upload.html @@ -20,7 +20,7 @@
- + 设置允许上传大小。
diff --git a/extend/base/helper.php b/extend/base/helper.php index 1980e1e..228c2ea 100644 --- a/extend/base/helper.php +++ b/extend/base/helper.php @@ -353,13 +353,44 @@ function array_to_table($array_tree, $prefix_key = '') function format_bytes($size, $delimiter = '') { + if (is_null($size)) { + return '0B'; + } $units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']; for ($i = 0; $size >= 1024 && $i < 5; $i++) { $size /= 1024; } - return round($size, 2) . $delimiter . $units[$i]; } +function parse_bytes($size) +{ + $unit = strtolower(substr($size, -1)); + $size = (int) $size; + switch ($unit) { + case 'b': + break; + case 'k': + $size *= 1024; + break; + case'm': + $size *= 1024 * 1024; + break; + case 'g': + $size *= 1024 * 1024 * 1024; + break; + case 't': + $size *= 1024 * 1024 * 1024 * 1024; + break; + case 'p': + $size *= 1024 * 1024 * 1024 * 1024 * 1024; + break; + default: + return $size; + } + + return $size; +} + function get_store_value($key, $default = null) {