【问题标题】:Count and limit the number of files uploaded (HTML file input)统计和限制上传文件的数量(HTML文件输入)
【发布时间】:2012-04-06 11:59:03
【问题描述】:

我有那个基本的、众所周知的多文件上传表单。类似的东西……

<input type="file" multiple="multiple" name="something[]" />

有没有办法(最好是硬编码选项)来限制用户可以选择的文件数量?限制是指严格阻止,而不仅仅是超过数量时的警告。

提前致谢。 :)

【问题讨论】:

  • 您总是可以在 PHP 代码中阻止它,但是这里没有足够的信息来了解您的界面的行为方式。

标签: php html file-upload


【解决方案1】:

您可以实施一个 javascript 解决方案来检查已选择的文件数量,然后您可以使用它来禁止上传到服务器。不过,对于这个问题实际上只有客户端解决方案,因为实际上没有什么能阻止用户将这些文件发布到您的 php 脚本。您可以指定最大上传大小限制,但它并不特定于正在上传的文件数量。

您最好的办法是实施一些 javascript 检查,为您的 http 服务器(或 PHP 中)指定合理的最大上传大小,然后忽略任何超过您的最大数量的上传文件。

在此处了解 HTML5 文件 API 以限制所选文件的数量:http://dev.w3.org/2006/webapi/FileAPI/

这里是解释如何限制上传大小的 php.ini 文档:http://php.net/manual/en/ini.core.php

按照 cmets 中的建议,查看:http://php.net/manual/en/ini.core.php#ini.max-file-uploads

【讨论】:

  • ` 因为没有什么能阻止用户将这些文件发布到您的 php 脚本: In fact, there is. In php.ini, you can limit that number with max_file_uploads` 选项 (php.net/manual/en/ini.core.php#ini.max-file-uploads)
  • @marvin:请将其添加为答案
  • @marvin 我曾假设“允许同时上传的最大文件数”意味着一种防止同时上传不同文件的 HTTP 连接的方法。不是这样吗?
  • @GoldenNewby:根据定义没有办法这样做。用户可以使用套接字发送任何他想要的东西
  • @zerkms 您当然可以阻止用户发送他们想要的任何内容。我认为没有理由 HTTP 服务器、防火墙甚至 PHP 在技术上不能阻止用户同时建立两个上传请求。如果 max-file-uploads 回答了这个问题,那就太好了!
【解决方案2】:

一些插件似乎可以帮助解决这个问题,例如:Uploadify (flash based)。但是,我还没有充分使用这个或其他人来了解他们是否可以限制上传。

更多关于Uploadify Multiple Uploads的信息。

【讨论】:

    【解决方案3】:

    我们都知道在数组中first element is stored in 0 th index, 2nd in 1st index......nth in (n-1)th index

    现在你不能使用count($_FILES['something']),因为数组中有 5 个键,所以它总是返回 5

    现在的问题是$_FILES['something']['name'][0] 包含什么? =>上传的第一个文件的名称

    所以检查一下

    if(empty($_FILES['something']['name'][0]))
    {
         //checking whether a single file uploaded or not
         //if enters here means no file uploaded
         //so if you want you may put a check/validation here to make file
         //upload a must in your website
    }
    if(isset($_FILES['something']['name'][5]))
    {
         //checking whether 6 files uploaded or not
         //so here you can put a check/validation to restrict user from
         //uploading more than 5 files
    }
    

    【讨论】:

      【解决方案4】:

      可以做到这一点的纯 Js 替代品以及更多:

      他们也可以通过https://cdnjs.com/获得

      【讨论】:

        猜你喜欢
        • 2017-03-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多