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

问题描述:

这是我的代码,我想在数据库中动态添加图像。我怎样才能做到这一点?basename()期望参数1是字符串数组给定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[]"> 
+0

请删除顶部的重复文本,询问实际问题并查看:https://*.com/help/mcve –

+0

调试什么是'basename($ _ FILES [“userfile”] [“name “]'你会看到要改变的。 – Tpojka

该错误消息标题中的状态正是你的错误。实际上,你可以看到什么是全局的$ _FILES数组中通过简单地打印出来:

print_r($_FILES); 

它看起来是这样的:

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

) 

正如你可以看到指数是一个数组,不是一个字符串。您必须选择要使用的这些文件中的哪一个(或全部使用)。

这意味着在你的榜样,你可以使用

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

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