basename()期望参数1是给定codeigniter的字符串数组

时间:2017-09-01 10:12:38

标签: codeigniter

这是我的代码,我想在数据库中动态添加图片。我怎么能这样做?

这是我的控制器

if($this->input->post('title'))
             {

                $values['prootherinfo']=$this->AdminModel->select_table('pro_otherinfo');
                foreach($values['prootherinfo']->result() as $r)  
                $image=$r->othr_info_image;
                $path=FCPATH."assets/images/".$image;
                unlink($path);
                $target_dir = FCPATH."assets/images/";
                $arrfile = pos($_FILES);
                $target_file = $target_dir . basename($_FILES["userfile"]["name"]);
                move_uploaded_file($_FILES["userfile"]["tmp_name"], $target_file);



                  $title = $this->input->post('title', true);
                  $desc = $this->input->post('desc', true);
                  $proid = $this->input->post('pro_id', true);      


                foreach ($title as $i => $a) { // need index to match other properties
                   foreach ($desc as $dd => $d)

                    $keyt = array(
                        'othr_info_image'=>$_FILES["userfile"]["name"],
                        'title' => $a,
                        'description' => $d,
                        'pro_id' => $proid

                    );
                    //print_r($keyt);

                    if (!$this->db->insert('pro_otherinfo', $keyt)) {
                        // quit if insert fails - adjust accordingly
                        print_r($keyt);
                        die('Failed insert');
                     }    
                 }
             }

这是我的观点

<input type="file" name="userfile[]">

1 个答案:

答案 0 :(得分:0)

标题中的错误消息准确说明了错误的位置。您只需打印它就可以看到全局$ _FILES数组中的内容:

print_r($_FILES);

看起来像这样:

Array (
    [userfile] => Array (
        [name] => Array (
                [0] => file.txt
            )
        [type] => ...
    )

)

正如您所看到的, name 索引是一个数组而不是字符串。您必须选择要使用的这些文件中的哪一个(或全部使用)。

这意味着在您的示例中您可以使用

$target_file = $target_dir . basename($_FILES["userfile"]["name"][0]);

当然,您必须检查每个索引是否设置正确。