Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 限制所选文件的数量_Php_Html_File_Select - Fatal编程技术网

Php 限制所选文件的数量

Php 限制所选文件的数量,php,html,file,select,Php,Html,File,Select,我有一个脚本,允许用户在按住CTRL键的同时选择多个图像,然后将它们上载到服务器。我需要将所选图像的数量限制为10个,这样当用户提交表单时,如果有10个以上的图像,他将得到一个错误 我该怎么做 附言:我有一个foreach循环,看起来像这样: foreach ($_FILES['file']['tmp_name'] as $key => $tmp_name) 欢迎使用PHP解决方案。因为我不信任javascript和jquery 编辑: 这是我的脚本:您的循环正在尝试遍历字符串。也许你的

我有一个脚本,允许用户在按住CTRL键的同时选择多个图像,然后将它们上载到服务器。我需要将所选图像的数量限制为10个,这样当用户提交表单时,如果有10个以上的图像,他将得到一个错误

我该怎么做

附言:我有一个foreach循环,看起来像这样:

foreach ($_FILES['file']['tmp_name'] as $key => $tmp_name)
欢迎使用PHP解决方案。因为我不信任javascript和jquery

编辑:


这是我的脚本:

您的循环正在尝试遍历字符串。也许你的意思是:

$number_of_files = 0;
foreach ($_FILES as $file)
{
    if ($file['error'] == 0)
    {
        // file uploaded successfully
        $number_of_files++;
    }
}

if ($number_of_files > 10)
{
    die('You uploaded too many files!');
} else {
    foreach ($_FILES as $file)
    {
        if ($file['error'] == 0)
        {
             copy_the_file_to_destination(); // left as an excercise for the reader ;-)
        }
    }
}

您可以只做
计数($\u文件),但它会计算所有文件输入,即使是空的。

我找到了我现在正在寻找的PHP答案!:D.我所做的是:

我检查了Carlos的答案,并在循环外放置了一个值为0的变量。然后我像Carlos那样创建了错误检查:
if($file['error']==0)
然后我又做了Carlos在if语句中做的事情
$number_of_files++

现在我跳出了循环,做了如下工作:

if ($uploaded > 10)
{
    unlink($image);
    unlink($thumb);
    if ($resize) { unlink($res); }
 }
这会自动删除第11个图像,并在我的服务器中仅保留10个图像


谢谢你提供的所有信息,卡洛斯,我想我把它组合得很好:p

你知道计数(!empty($\u FILES))是否有效吗?如果它会这样做,那么它将只计算非emptyno的文件输入,它将不起作用,因为
empty
查找空数据并返回bool
$\u文件
不会为空,因此它会返回true(empty不足以检查每个
$\u文件['*']['error']
并检查它是否为0。此外,您还可以对非数组表达式进行计数。Beauty,谢谢,在这个用法中不确定,所以我想我会询问而不是建议:-)由于我在文件输入中使用了multiple属性,您在上面演示的foreach循环无法工作。我花了很长时间来编写我在问题中展示的foreach循环,在此之前我想了很多,并尝试了很多其他方法(包括你的方法),除了我展示的方法之外,它们都不起作用。我看到的PHP唯一解决方案的问题是,如果用户选择了11个项目,并且没有得到即时通知,可能会惹恼用户,使用JS(jQuery或not),您可以在选择第11项时发出警报,这意味着用户可以在提交无效项集之前根据需要更改其选择,然后您可以放置一个PHP回退脚本来验证提交是否正确。这两个世界都是最好的。你说得有道理,我必须同意。PHP和JavaScript(或jQuery)都可以让事情看起来更好。我是否需要提出另一个问题来询问JavaScript解决方案,或者我可以使用这个问题来获得新的答案。。。?