【发布时间】:2018-08-17 08:46:40
【问题描述】:
我正在尝试使用单个输入上传多个文件,并且我想将所有文件的总大小限制为小于 100 MB。我该怎么办?
这是我的代码:
<?php
if(isset($_POST['submit'])){
if(count($_FILES['upload']['name']) > 0){
for($i=0; $i<count($_FILES['upload']['name']); $i++) {
$fileName = $_FILES['upload']['name'][$i];
$fileExt = strtolower(pathinfo($_FILES['upload']['name'][$i],PATHINFO_EXTENSION));
$maxFileSize = 100 * 1024 * 1024 /* 100MB */;
if(empty($fileName)) {
echo 'Please select photos to upload!';
} else if(!in_array( $fileExt, array('jpg', 'jpeg', 'png', 'gif', 'bmp'))) {
echo 'Only photos, videos and audios allowed. If you have one or more files that is not in our <a href="#">supported extensions</a> directory, please remove it!';
} else if($_FILES['upload']['size'][$i]>$maxFileSize) {
echo 'Your file\s exceed the limit of 100MB capacity';
} else {
echo "Uploaded";
}
}
}
}
?>
<form action="" enctype="multipart/form-data" method="post">
<div>
<label for='upload'>Add Attachments:</label>
<input id='upload' name="upload[]" type="file" multiple="multiple" />
</div>
<p><input type="submit" name="submit" value="Submit"></p>
</form>
似乎我无法获得所有文件大小的总和。我怎样才能做到这一点? 提前致谢!
【问题讨论】:
-
您可以使用配置将最大帖子大小设置为 100Mb。 php.net/manual/ini.core.php#ini.post-max-size
-
不...我想要所有这些尺寸的总和。因为它是一个数组,所以它返回不同文件的大小。
-
另外请注意,根据文件扩展名检查文件类型是不安全的。最好使用 fileinfo :php.net/manual/book.fileinfo.php
-
这就是
post_max_size does:它限制了整个发布请求的大小,因此如果您将限制设置为100M,您将能够上传一个100Mb文件或 2 个 @987654327 @ 文件但上传 2 个60Mb文件会失败,因为这两个大小的总和大于post_max_size -
我尝试了所有答案,但没有一个有效..你能告诉我上传多个文件的其他方式