なぜか質問を投稿すると反映されない。。 何かしら問題があってはじかれている??
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です。
デモ
現時点で制限に達しています
検索

コメントを残す