我的代码问题一直困扰着我。我只是无法弄清楚导致此错误的原因。
所以,我在CMS中制作了一个上传表单。如果我上传9张照片,它可以正常工作。如果我上传超过9个文件,它会给我这个错误:
array_keys() expects parameter 1 to be array, null given in C:...upload.php on line 18
有人可以帮帮我吗?
代码:
$file_ary = reArrayFiles($_FILES['ufile']);
//Reorganising the $_FILES:
function reArrayFiles(&$file_post) {
$file_ary = array();
$file_count = count($file_post['name']);
$file_keys = array_keys($file_post);
for ($i=0; $i<$file_count; $i++) {
foreach ($file_keys as $key) {
$file_ary[$i][$key] = $file_post[$key][$i];
}
}
return $file_ary;
}
foreach ($file_ary as $file) {
$dir = "imgs/" . $last_fotoid . "/";
if (!file_exists($dir)) {
mkdir("imgs/" . $last_fotoid . "/");
}
$target_file = $dir . basename($file["name"]);
move_uploaded_file($file["tmp_name"], $target_file);
}
我的表格:
<form method="post" action="upload.php" enctype="multipart/form-data">
Select image to upload:<br>
<input type="file" name="ufile[]" multiple>
<input type="submit" value="Upload Image" name="submit">
</form>
答案 0 :(得分:0)
错误明确指出:colorscheme default
所以有一种情况是你要调用 reArrayFiles()方法但是使用null参数而不是期望的数组(在这种情况下是文件) )。您可以在将$file_keys = array_keys($file_post);
传递给方法之前检查$_FILES['ufile']
的值来确认这一点。
当您访问包含表单的页面时,是否会发生这种情况?或者只有在您提交表格时才会发生?没有看到您的完整代码很难成为%100,但我认为您已经忘记执行代码仅当它是POST请求作为结果提交表格。
基本上确保只有在收到预期文件后才开始处理。