2013-04-28 3 views
0

У меня есть имя папки/clientupload/в моем хосте. Я хочу ограничить количество файлов в папке clientupload и ее подпапке до 200.Ограничить количество файлов в папке

Я не знаю, как это сделать!

+0

Почему вы хотите ограничить количество файлов в папке до 200? – michaelb958

+0

Я разрешаю клиенту загружать свой документ, поэтому я хочу ограничить количество файлов, которые они могут загрузить. Также главная причина - ограничение Inode – user1809599

+0

Если вы не создаете что-то в масштабе Facebook, вы не должны беспокоиться об ограничениях inode. – michaelb958

ответ

3

вы можете проверить (с помощью PHP) количества файлов в папке, прежде чем позволить пользователю загрузить файл

ив изменяет эту работу с подпапкой.

, например, (возможно, потребуется немного изменить это запустить техника его подводит ....):

<?php 

    define("MAX_UPLOAD_AMOUNT", 200); 
    //switch to your dir name 
    $dirName = "/Temp/"; 
    //will count number of files 
    $totalFileAmount = countFiles($dirName); 

function countFiles($dirName){ 


    $fileAmount = 0; 
    //open dir 
    $dir = dir($dirName); 

    //go over the dir 
    while ($file = $dir->Read()){ 
    //check there are no .. and . in the list 
    if (!(($file == "..") || ($file == "."))){ 
     //check if this is a dir 
     if (Is_Dir($dirName . '/' . $file)){ 
      //yes its a dir, check for amount of files in it 
      $fileAmount += countFiles($dirName . '/' . $file); 
     } 
     else{ 
     //its not a dir, not a .. and not a . so it must be a file, update counter 
     $fileAmount++; 
     } 
    } 
    } 

    return $fileAmount; 
} 

    //check if user can upload more files 
    if ($totalFileAmount >= MAX_UPLOAD_AMOUNT) 
     echo "You have reached the upload amount limit, no more uploaded"; 
    else 
     echo "let the user upload the files, total number of files is $totalFileAmount"; 

    ?> 
+1

Не должен ли этот последний 'if' быть' if ($ size> = MAX_UPLOAD_AMOUNT) {echo "Вы не можете загружать больше файлов"} '? – michaelb958

+0

@ user1809599 Обратите внимание на '> =' - если вы используете '>' вместо этого, пользователь будет ограничен 201 файлом вместо 200. – michaelb958

+0

Он не учитывает файлы в подпапке! нехорошо, как ожидалось! – user1809599

0

Я нашел рабочее решение на мой собственный! Вы можете попробовать приведенный ниже код. 200 - это лимит файла, который вы можете изменить!

<?php 

define("MAX_UPLOAD_AMOUNT", 200); 

function scan_dir($path){ 
    $ite=new RecursiveDirectoryIterator($path); 

    $bytestotal=0; 
    $nbfiles=0; 
    foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) { 

     $nbfiles++; 
     $files[] = $filename; 
    } 

    $bytestotal=number_format($bytestotal); 

    return array('total_files'=>$nbfiles,'files'=>$files); 
} 

$files = scan_dir('folderlinkhere'); 

if ($files['total_files'] >= MAX_UPLOAD_AMOUNT) 
     echo "Files are more than 200. "; 
    else 
      echo "Carry out the function when less than 200"; 
?>