计算并限制上传的文件数(HTML文件输入)

时间:2012-03-21 22:02:58

标签: php html file-upload

我有这个基本的,众所周知的多文件上传表单。像那样......

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

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

提前致谢。 :)

4 个答案:

答案 0 :(得分:8)

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

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

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

这是php.ini文档,解释了如何对上传进行大小限制:http://php.net/manual/en/ini.core.php

正如评论中所建议的那样,请查看:http://php.net/manual/en/ini.core.php#ini.max-file-uploads

答案 1 :(得分:7)

我们都知道在数组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]包含什么? =&gt; 上传的第一个文件的名称

所以请检查

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
}

答案 2 :(得分:1)

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

它们也可在https://cdnjs.com/

获取

答案 3 :(得分:0)

有些插件似乎对此有所帮助,例如:Uploadify (flash based)。但是,我没有充分利用这个或其他人知道他们是否限制上传的限制。

有关Uploadify Multiple Uploads的更多信息。

相关问题