我希望在成功满足所有条件后将多个文件上传到文件夹。我允许用户选择他们要上传的文件数量,但是我从脚本中收到此错误:
Notice: Undefined offset: 1 in C:\xampp\htdocs\FreeCheese\news_parse.php on line 54
注意:
以下数字' Undefined offset:',在这种情况下设置为' 1'。当我选择在页面中插入更多文件字段时,这个数字就变成了PHP正在读取的当前文件字段的数量。
EG:我有三个文件字段,错误将变为:
Notice: Undefined offset: 3 in C:\xampp\htdocs\FreeCheese\news_parse.php on line 54
如果我执行选择要上传的三个文件,所有这些文件都正确地插入到文件夹中,所以我不知道为什么在它正常运行时给出错误。
如果有人可以帮我修复此错误,那么我们将非常感激。
提前致谢,Rich
这是我的代码:
// Set the array object to 0 when entering the loop.
$i = 0;
while ($_FILES['upload1']['tmp_name'][$i]) {
$imgName1 = preg_replace("#[^a-z0-9.]#i", "", $_FILES['upload1']['name'][$i]);
// Applies a unique number before the file name to prevent files from overwriting.
$imgName1 = mt_rand(100000, 999999).$imgName1;
// Moves the image into the images/ folder
move_uploaded_file($imgTmp1[$i], "images/$imgName1");
// Sets the next array object in the loop to 1 etc etc
$i ++;
}
答案 0 :(得分:2)
如果有5个文件,则$_FILES['upload1']['tmp_name'][5]
将不存在,因此while
条件崩溃(它不会返回false!)...
你必须检查count($_FILES['upload1']['tmp_name'])
!
$nbFiles = count($_FILES['upload1']['tmp_name']);
while ($i < $nbFiles) {
[...your code...]
$i++;
}
您还应该使用for
循环,因为它是根据您的需要制作的:
$nbFiles = count($_FILES['upload1']['tmp_name']);
for ($i=0; $i < $nbFiles; $i++) {
[...your code...]
}