コメントありがとうございます。 サービス終了した今なら、安く中古が手に入りそ…
KCFinderにディレクトリごとの容量制限をかけてみた
関連記事はこちらで見ることが出来ます。
記事「KCFinderを導入してみる」からのカスタマイズです。
デフォルトのままだと、無制限(ストレージの許す限り)にアップロードできるので、制限をかけれるようにカスタマイズしてみた。
(標準機能でできる場合は教えてください)
使用したKCFinderは4.5.8です
次の二つのphpをカスタマイズします。
kcfinder/core/class/browser.php
283行目$dir = $this->postDir();の後ろに挿入
//*** Ys Costomize 1.0.0 ***// if(isset($this->config['dirMaxSize'])){ function dir_size($d){ $s=(int)0; $h=opendir($d); while($f=readdir($h)){ if($f=='..' || $f=='.') continue; else if(!is_dir($d.'/'.$f)) $s+=filesize($d.'/'.$f); else $s+=dir_size($d.'/'.$f); } return $s; } $Capacity=(int)0; if(preg_match('/^\d+$/',$this->config['dirMaxSize'])) $Capacity=$this->config['dirMaxSize']; else if(preg_match('/^(\d+)B$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]; else if(preg_match('/^(\d+)KB$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]*1024; else if(preg_match('/^(\d+)MB$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]*1024*1024; else $this->errorMsg("Unknown error."); $Used=dir_size($dir); if(is_array($this->file['size'])){ foreach($this->file['size'] as $byte) $Used+=$byte; } if($Capacity<=$Used) $this->errorMsg("The uploaded file exceeds {size} bytes.",array('size'=>$Capacity)); } //*** Ys Costomize 1.0.0 END ***//
kcfinder/core/class/uploader.php
339行目if (!strlen($message)) {の前に挿入
//*** Ys Costomize 1.0.0 ***// if (!strlen($message)) { if(isset($this->config['dirMaxSize'])){ function dir_size($d){ $s=(int)0; $h=opendir($d); while($f=readdir($h)){ if($f=='..' || $f=='.') continue; else if(!is_dir($d.'/'.$f)) $s+=filesize($d.'/'.$f); else $s+=dir_size($d.'/'.$f); } return $s; } $Capacity=(int)0; if(preg_match('/^\d+$/',$this->config['dirMaxSize'])) $Capacity=$this->config['dirMaxSize']; else if(preg_match('/^(\d+)B$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]; else if(preg_match('/^(\d+)KB$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]*1024; else if(preg_match('/^(\d+)MB$/i',$this->config['dirMaxSize'],$matches)) $Capacity=$matches[1]*1024*1024; else $message=$this->label("Unknown error."); $Used=dir_size($dir); if(is_numeric($this->file['size'])) $Used+=$this->file['size']; if($Capacity<=$Used) $message=$this->label("The uploaded file exceeds {size} bytes.",array('size'=>$Capacity)); } } //*** Ys Costomize 1.0.0 END ***//
最後に設定ファイルを変更します。
希望の数値に変更してください。
kcfinder/conf/config.php
19行目$_CONFIG = array(の後ろに挿入
'dirMaxSize'=>'100KB'
使用できる単位は、B,KB,MBです。
デモ
現時点で制限に達しています
検索
コメントを残す