嘿,我一直收到错误
array_sum()期望参数1为数组
有谁知道我做错了什么?万分感谢。我想我可能在文件夹名称或其他地方的错误位置有斜线?我有一个下拉菜单给我文件夹的价值,我通过javascript提交表单,如下:
document.getElementById("form").submit();
alert("form submitted");
PHP
<?php
$type = $_POST['Folder'];
$folder = "uploaded/$type";
$allow_types=array("aiff","mp3","wav");
$max_combined_size="10000";
If($_POST['submit']==true) {
//Tally the size of all the files uploaded, check if it's over the ammount.
If(array_sum($_FILES['file']['size']) > $max_combined_size*1024) {
echo "Combined file size is to large";
/ Loop though, verify and upload files.
} Else {
// Loop through all the files.
For($i=0; $i <= $file_uploads-1; $i++) {
//Get the file extension
$file_ext[$i] = strtolower(pathinfo($_FILES['file']['name'][$i], PATHINFO_EXTENSION));
// If the file is a file
If($_FILES['file']['name'][$i]) {
// Randomize file names
$file_name[$i]=1;
while(1){
$file_name[$i] =$file_name[$i]+1;
if exists("$folder/$file_name[$i].$file_ext[$i]")){
break;
}
}
// Check for blank file name
If(str_replace(" ", "", $file_name[$i])=="") {
echo " Blank file name detected";
} ElseIf(!in_array($file_ext[$i], $allow_types)) {
echo "Invalide file type";
} Elseif(file_exists($folder.$file_name[$i].".".$file_ext[$i])) {
echo "File already exists";
} Else {
If(move_uploaded_file($_FILES['file']['tmp_name'][$i],$folder.$file_name[$i].".".$file_ext[$i])) {
echo "success!";
} Else {
echo "upload failure";
}
}
} // If Files
} // For
} // Else Total Size
}
?>
答案 0 :(得分:0)
你调用array_sum
,传入一个不是数组的值。您传递的值是$_FILES['file']['size']
,它不是数组,而只是文件'file'的(整数)大小。
不幸的是,您想要对大小求和,但它们嵌套在文件数组中。 files数组本身包含每个项目的数组,每个项目都是一个数组,其中的键包含一个文件的各种属性。该函数只能对单个一维数组的项进行求和,因此这里的函数不会有多大帮助。
使用循环解决它:
$size = 0;
foreach ($_FILES as $file) {
$size += $file['size'];
}
if ($size > $max_combined_size*1024) {
.. Do your stuff
}
答案 1 :(得分:-2)
array_sum($_FILES['file']['size'])
你的问题是,array_sum是期待一个数组,但你发送的是一个大小。大小可能是整数。试试
array_sum($_FILES['file'])
并查看是否有其他错误。