Amélioration de kcfinder en limitant le nombre d'uploads

Petit nouveau ! | 1 Messages

24 mars 2014, 16:34

Bonjour,
J'utilise kcfinder (openSource) associé à ckeditor. Dans le but d'éviter des uploads excessifs j'ai développé un petit script qui cumule la taille des fichiers d'un dossier. Jusque là aucun souci.
Le fichier chargé de l'upload se trouve : kcfinder/core/class/uploader.php et j'ai commencé à le modifier à la ligne 310.
A cette étape la variable $dir contient le chemin complet sur le server vers le dossier "images" à savoir /homez/bla/bla/kcfinder/uplaod/images

public function upload() {
$config = &$this->config;
$file = &$this->file;
$url = $message = "";

if ($config['disabled'] || !$config['access']['files']['upload']) {
if (isset($file['tmp_name'])) @unlink($file['tmp_name']);
$message = $this->label("You don't have permissions to upload files.");

} elseif (true === ($message = $this->checkUploadedFile())) {
$message = "";

$dir = "{$this->typeDir}/";
//********************************************************************************************************************
echo'<script type="text/javascript">alert("path : '.$dir.'")</script>';//path : /homez/bla/bla/kcfinder/uplaod/images

$mydirectory = opendir($dir) or die('Erreur');
$size=0;
while($entry = readdir($mydirectory)) {
if($entry != '.' && $entry != '..') {
$size+=filesize($entry);
}
}

closedir($dir);

echo'<script type="text/javascript">alert("taille : '.$size.'")</script>';
//affiche taille : 0 C'est là que je craque parce qu'à force de faire des essais j'en suis en réalité à quelques 187 fichiers et plusieurs centaines de Ko!!!!
//**********************************************************************************************************************************************************
J'ai fait des essais plus loin dans le code où la variable $dir prend pour valeur le chemin relatif du dossier "images" mais j'obtiens le même résultat : 0
Merci pour votre contribution,
Eric

Eléphant du PHP | 58 Messages

13 avr. 2014, 08:33

As-tu vérifier que readdir() ne te renvoie pas FALSE ? Il semblerait que

Code : Tout sélectionner

while (false !== ($entry = readdir($handle))) { //ton code }
soit plus approprié.