2

我的代码有问题。

情况是,我有多个输入文件表单,我需要获取当前数组的名称(包含数据库 ID)并从中上传文件。

这是我的看法

foreach($result2 as $result3)
{
   print "
   <tr>
       <td><input type=file name=baddismantling[".$result3['iddeployment']."] size=20></td>
   </tr>
   ";
}

所以,上传的形式和名称也会多种多样,但总是独一无二的。

在用户单击提交按钮后,该表单将调用我的控制器中的函数,这是处理它的函数

private function _ready_to_start($sessiondata)
{
    if($post['doSubmitDismantlingAction'] == 'uploadbad')
    {
        while ($fruit_name = current($_FILES['baddismantling']['name']))
        {
            if($fruit_name != false)
        {
                //GET ID FROM DEPLOYMENT DB
            $deploymentid = key($_FILES['baddismantling']['name']);
                $file = "baddismantling[$deploymentid]";
            if(!$this->upload->do_upload($file))
                {
                    $check3[] = $this->upload->display_errors()." target: ".$file;
                }
            $check2 = $this->upload->data();
        }
            next($_FILES['baddismantling']['name']);
        }
        //SHOW RESULT WHILE UPLOADING
        print implode($check3);
    }
}

如您所见,我已成功获得

$deploymentid = 1

如我所愿...但是,浏览器给我:

您没有选择要上传的文件。目标:坏拆解[1]

任何人都可以就这个问题给我建议?或者我的代码有问题?

注意:

配置 $this->upload-> 没有问题,因为我只使用一个上传表单就成功了

4

1 回答 1

1

感谢您花时间回答我的问题,并且我“幸运地”通过以下代码从上面的问题中得到了自己的解决方案:

$check3 = array();
$count = 0;
$check = ($_FILES == true ? count($_FILES['baddismantling']['name']) : (0));
while ($fruit_name = ($check == true && $check > 0 ? current($_FILES['baddismantling']['name']) : (false)) || $count <= $check){
$count++;
if($fruit_name == true && key($_FILES['baddismantling']['name']) == true)
{
    $iddeployment = key($_FILES['baddismantling']['name']);
    /*THIS PART WAS HELPING ME*/if($_FILES['baddismantling']['name'][$iddeployment] == true)
    {
    $_FILES['userfile']['name']     = $_FILES['baddismantling']['name'][$iddeployment];
    $_FILES['userfile']['type']     = $_FILES['baddismantling']['type'][$iddeployment];
    $_FILES['userfile']['tmp_name'] = $_FILES['baddismantling']['tmp_name'][$iddeployment];
    $_FILES['userfile']['error']    = $_FILES['baddismantling']['error'][$iddeployment];
    $_FILES['userfile']['size']     = $_FILES['baddismantling']['size'][$iddeployment];
    if (!$this->upload->do_upload())
    {
        $check3[] = $this->upload->display_errors();
    }
    else
    {
        $uploaddata = $this->upload->data();
        $result['badfilename'] = $uploaddata['full_path'];
        $result['id'] = $iddeployment;
        $sql = $this->sql->updatedismantlingBAD($result);
    }
}
}
next($_FILES['baddismantling']['name']);}
于 2013-09-29T23:41:04.640 回答