PHP$\文件大小总问题
我有一个HTML表单,它将表单值和文件上传到PHP进行处理。我想做的一项检查是获取上传的所有文件的总大小。如果size数组中的任何值都不为0,那么下面的代码可以正常工作,但是如果其中任何值都为0(当文件输入为空时会发生这种情况),那么出于某种原因,total总是输出为0 代码:PHP$\文件大小总问题,php,html,forms,Php,Html,Forms,我有一个HTML表单,它将表单值和文件上传到PHP进行处理。我想做的一项检查是获取上传的所有文件的总大小。如果size数组中的任何值都不为0,那么下面的代码可以正常工作,但是如果其中任何值都为0(当文件输入为空时会发生这种情况),那么出于某种原因,total总是输出为0 代码: if(!empty($_文件['attachment']){//如果有附件 $count=count($_文件['attachment']['name']); 如果($count>0){ 对于($i=0;$i209715
if(!empty($_文件['attachment']){//如果有附件
$count=count($_文件['attachment']['name']);
如果($count>0){
对于($i=0;$i<$count;$i++){
如果(!empty($totalFileSize)){
$totalFileSize=0;
}
//总文件大小
如果($\u文件[“附件”][“大小”][$i]!=0){
$totalFileSize+=($_文件[“附件”][“大小”][$i]);
}
}
$message=$totalFileSize;
}
//检查
如果($totalFileSize>20971520){
$fileSizeError=1;
}
}
回声'
我不明白为什么在没有0的情况下for循环中的附加值可以正常工作,但在有0的情况下却不行 首先,如果要使用+=
,则必须先初始化该变量,然后再执行第一个+=
其次,在循环中有这一行,它将把$totalFileSize
的值设置为零,如果该值存在并且大于0
$totalFileSize = 0; // init before using `+=`
if (!empty($_FILES['attachment'])) { //If there are attachments
$count = count($_FILES['attachment']['name']);
if ($count > 0) {
for ($i = 0; $i < $count; $i ++) {
//Total File Size
if ($_FILES["attachment"]["size"][$i] != 0){
$totalFileSize += ($_FILES["attachment"]["size"][$i]);
}
}
$message = $totalFileSize;
}
//Checks
if ($totalFileSize > 20971520){
$fileSizeError = 1;
}
}
因此,将代码更改为
$totalFileSize = 0; // init before using `+=`
if (!empty($_FILES['attachment'])) { //If there are attachments
foreach( $_FILES['attachment']['size'] as $size){
//add up the File Sizes
$totalFileSize += $size;
}
$message = $totalFileSize;
//Checks
if ($totalFileSize > 20971520){
$fileSizeError = 1;
}
}
甚至
if (!empty($_FILES['attachment'])) { //If there are attachments
if (array_sum($_FILES['attachment']['size']) > 20971520){
$fileSizeError = 1;
}
}
甚至
如果(!empty($totalFileSize)){$totalFileSize=0;}
-这有什么意义?在每个循环迭代中,如果它已经有一个非零值,您将把$totalFileSize
重置回零。如果($\u FILES[“attachment”][“size”][“size”[$i]!=0){$totalFileSize+=($\u FILES[“attachment”[“size”[$i]);}
-这似乎也毫无意义。如果要添加的值为0,则您在这里跳过了限制,以不“更改”您的总和。那么一个总和加上0会改变多少…?
$totalFileSize = 0; // init before using `+=`
if (!empty($_FILES['attachment'])) { //If there are attachments
foreach( $_FILES['attachment']['size'] as $size){
//add up the File Sizes
$totalFileSize += $size;
}
$message = $totalFileSize;
//Checks
if ($totalFileSize > 20971520){
$fileSizeError = 1;
}
}
if (!empty($_FILES['attachment'])) { //If there are attachments
$totalFileSize = array_sum($_FILES['attachment']['size']){
//Checks
if ($totalFileSize > 20971520){
$fileSizeError = 1;
}
}
if (!empty($_FILES['attachment'])) { //If there are attachments
if (array_sum($_FILES['attachment']['size']) > 20971520){
$fileSizeError = 1;
}
}