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[]">
答
该错误消息标题中的状态正是你的错误。实际上,你可以看到什么是全局的$ _FILES数组中通过简单地打印出来:
print_r($_FILES);
它看起来是这样的:
Array (
[userfile] => Array (
[name] => Array (
[0] => file.txt
)
[type] => ...
)
)
正如你可以看到名指数是一个数组,不是一个字符串。您必须选择要使用的这些文件中的哪一个(或全部使用)。
这意味着在你的榜样,你可以使用
$target_file = $target_dir . basename($_FILES["userfile"]["name"][0]);
当然,你必须检查每个索引设置正确。
请删除顶部的重复文本,询问实际问题并查看:https://*.com/help/mcve –
调试什么是'basename($ _ FILES [“userfile”] [“name “]'你会看到要改变的。 – Tpojka