У меня есть имя папки/clientupload/в моем хосте. Я хочу ограничить количество файлов в папке clientupload и ее подпапке до 200.Ограничить количество файлов в папке
Я не знаю, как это сделать!
У меня есть имя папки/clientupload/в моем хосте. Я хочу ограничить количество файлов в папке clientupload и ее подпапке до 200.Ограничить количество файлов в папке
Я не знаю, как это сделать!
вы можете проверить (с помощью 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";
?>
Не должен ли этот последний 'if' быть' if ($ size> = MAX_UPLOAD_AMOUNT) {echo "Вы не можете загружать больше файлов"} '? – michaelb958
@ user1809599 Обратите внимание на '> =' - если вы используете '>' вместо этого, пользователь будет ограничен 201 файлом вместо 200. – michaelb958
Он не учитывает файлы в подпапке! нехорошо, как ожидалось! – user1809599
Я нашел рабочее решение на мой собственный! Вы можете попробовать приведенный ниже код. 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";
?>
Почему вы хотите ограничить количество файлов в папке до 200? – michaelb958
Я разрешаю клиенту загружать свой документ, поэтому я хочу ограничить количество файлов, которые они могут загрузить. Также главная причина - ограничение Inode – user1809599
Если вы не создаете что-то в масштабе Facebook, вы не должны беспокоиться об ограничениях inode. – michaelb958