0

注意:未定义的偏移量:第 6 行上的 3

第 6 行如下:

$tmpFilePath = $_FILES['file']['tmp_name'][$i];

这是您应该需要的一切:

session_start();
//Loop through each file
for($i=0; $i<count($_FILES['file']); $i++) {
  //Get the temp file path
  $tmpFilePath = $_FILES['file']['tmp_name'][$i];

  //Make sure we have a filepath
  if ($tmpFilePath != ""){
    //Setup our new file path
    $newFilePath = "./uploaded_files/" . $_FILES['file']['name'][$i];

    //Upload the file into the temp dir
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {

    echo "Upload Successful!<br />";

}
}
}
4

2 回答 2

2

检查它是否存在:

if (isset($_FILES['file']['tmp_name'][$i]))
{
    $tmpFilePath = $_FILES['file']['tmp_name'][$i];
}
于 2012-12-12T07:35:21.633 回答
0

乍一看,你在 for() 循环中的代码应该是:

for($i=0; $i<count($_FILES['file']['tmp_name']); $i++)

因为计入的项目$_FILES['file']可能与计入的项目不同$_FILES['file']['tmp_name']

如果项目的数量$_FILES['file']多于计数的项目,$_FILES['file']['tmp_name']那么您的代码将触发错误并通知未定义的偏移量。

如果 in 中$_FILES['file']的项目数小于计入的项目数,$_FILES['file']['tmp_name']则您的代码将不会看到超出['tmp_name']数组中较高初始计数的所有数据。

最好保持 for 循环的递增变量/运算符最接近您在表达式中计数的数组/子数组。

轻松记住这一点的一个关键技巧是注意 for 循环看起来与您放入变量的数组的索引/关联位置几乎相同。

for($i=0; $i<count($_FILES['file']['tmp_name']); $i++)  
$tmpFilePath   =   $_FILES['file']['tmp_name'][$i];  

看见?

于 2013-01-20T05:49:29.577 回答